大家好,去年5月份開始到今年2月份,我們一共割接了40多套PG,今天就來聊一聊遇到的那些遷移和使用的“坑”。
希望這是一期不錯的節目。
坑主駕到(一)
開發用to_date()的一定要注意,有可能查詢不出數據,wrongresult
查詢結果不一致。Oracle能查出數據,PG查出來數據為空。先來看看具體的截圖:
其實這原本是一個上百行的SQL,問題發生在此處定位需要不停的拆分和測試,我略微精簡了一下。我們調整后的SQL如下。
會發現數據立馬有了。
其實這個問題很簡單,Oracle使用的date類型是帶時分秒的,而Postgresql的date類型是不帶時分秒的。所以在Oracle遷移到PostgreSQL,轉換的時候都會把Date類型改造成Timestamp類型。
問題就在于PostgreSQL自帶了to_date函數。該函數的返回類型是PostgreSQL中的Date類型。
所以在上面就相當于數據類型不一致,導致查不到數據。該問題解決辦法有兩種:
坑主駕到(二)
序列順序問題
這個問題是我們創建了序列,開發使用的時候發現序列產生的值居然比當前序列最大值還要小。
這個問題的主要原因就是Oracle和PostgreSQL在序列上有差異,我們主要來觀察一下PG的行為:
1、先創建一個序列,起使值100,cache值20,會話A讀一下nextval。
2、接下類在開會話B,讀一下nextval,發現值變成了120。
注意按照Oracle數據庫的邏輯,此時序列的最大值已經是120了。
3、返回到會話A,再次獲取nextval,發現值是101。
此時就出現了開發遇到的情況:序列產生的值居然比當前序列最大值還要小。
大多數序列只要不存在時間依賴關系,使用上都沒問題。但是如果出現了數字小的序列一定要比數字大的序列時間早這種邏輯,就需要把序列的cache值設置成1。
坑主駕到(三)
substr函數結果不一致
PostgreSQL
Oracle
Substr函數的起使位置要從1開始,如果位置從0開始,雖然有數據但是和Oracle不一致。
坑主駕到(四)
事務問題
這個問題我對Oracle、MySQL、PostgreSQL做了詳盡的測試,結論就是
在Oracle和MySQL中,當其他會話更新或刪除了選定的行時,當前會話在執行事務之前將重新檢查最新的數據。PostgreSQL當選定的行被其他會話更新或刪除時,當前會話將忽略這些行。
事務問題會導致出現數據刪除丟失。需要應用程序側考慮這個問題進行改造。
由于篇幅的原因,今天的“入坑到出坑”娛樂節目,暫時介紹到這里。文中如有錯誤,請大神們幫忙把“坑”填了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129996.html
摘要:順便補充一句,微信官方提供的判斷依舊不全面,最新出來的蘋果手機還沒有完全支持相關的坑可以在官方社區的問答中找到。 首次在這里寫點東西,還請各位大佬擔待點。 摘要:昨天的placeholder-class只是希望各位看官注意,而今天的textarea就絕對是一個超級大坑!而且如果看官手中沒有蘋果手機測試的話,這個可就真的是個坑了!為啥?難道要等到用戶向你反饋你們產品有bug???.......
摘要:今年歲,目前在某行業頭部企業任職測試負責人,管理人的測試團隊。渾渾噩噩的年我年出生,年二本畢業,專業是電子信息工程專業。轉行這年截止此時此刻,我已入坑近年時間,經歷家互聯網公司,最近一份工作已有年之多,目前任職測試負責人。 ...
摘要:近期在做微信支付那方面的工作由于要在之前開發人員的基礎上進行開發其中使用到了這個第方支付的。下面梳理下正常開發的流程請點擊下面的鏈接付款。結果總是提示必須是組鍵值對。主要是官方沒有提供明確的請求頭信息給我們導致我們一直在兜圈。 近期在做微信支付那方面的工作,由于要在之前開發人員的基礎上進行開發,其中使用到了ping++這個第3方支付的SDK。不得不說,ping++的SDK做的挺簡單的,...
摘要:近期在做微信支付那方面的工作由于要在之前開發人員的基礎上進行開發其中使用到了這個第方支付的。下面梳理下正常開發的流程請點擊下面的鏈接付款。結果總是提示必須是組鍵值對。主要是官方沒有提供明確的請求頭信息給我們導致我們一直在兜圈。 近期在做微信支付那方面的工作,由于要在之前開發人員的基礎上進行開發,其中使用到了ping++這個第3方支付的SDK。不得不說,ping++的SDK做的挺簡單的,...
摘要:今天遇到一個一直認為很簡單的問題,真正接手后才知道這么可怕大體是這樣的,默認動態加載的應該是自動向下,當遇到頁面最下面應該自動向上渲染。動態生成的都是根據來監聽獲取元素的信息。 今天遇到一個一直認為很簡單的問題,真正接手后才知道這么可怕 大體是這樣的,默認動態加載的card應該是自動向下,當card遇到頁面最下面應該自動向上渲染。showImg(https://segmentfault...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20