成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

遷移了40多套PG,從入坑到出坑?

IT那活兒 / 1458人閱讀
遷移了40多套PG,從入坑到出坑?
點(diǎn)擊上方藍(lán)字關(guān)注我們


大家好,去年5月份開(kāi)始到今年2月份,我們一共割接了40多套PG,今天就來(lái)聊一聊遇到的那些遷移和使用的“坑”。

希望這是一期不錯(cuò)的節(jié)目。


坑主駕到(一) 

  開(kāi)發(fā)用to_date()的一定要注意,有可能查詢(xún)不出數(shù)據(jù),wrongresult


查詢(xún)結(jié)果不一致。Oracle能查出數(shù)據(jù),PG查出來(lái)數(shù)據(jù)為空。先來(lái)看看具體的截圖:

其實(shí)這原本是一個(gè)上百行的SQL,問(wèn)題發(fā)生在此處定位需要不停的拆分和測(cè)試,我略微精簡(jiǎn)了一下。我們調(diào)整后的SQL如下。

會(huì)發(fā)現(xiàn)數(shù)據(jù)立馬有了。

其實(shí)這個(gè)問(wèn)題很簡(jiǎn)單,Oracle使用的date類(lèi)型是帶時(shí)分秒的,而Postgresql的date類(lèi)型是不帶時(shí)分秒的。所以在Oracle遷移到PostgreSQL,轉(zhuǎn)換的時(shí)候都會(huì)把Date類(lèi)型改造成Timestamp類(lèi)型。

問(wèn)題就在于PostgreSQL自帶了to_date函數(shù)。該函數(shù)的返回類(lèi)型是PostgreSQL中的Date類(lèi)型。

所以在上面就相當(dāng)于數(shù)據(jù)類(lèi)型不一致,導(dǎo)致查不到數(shù)據(jù)。該問(wèn)題解決辦法有兩種:

  • 把to_date函數(shù)改造成to_timestamp。
  • 安裝第三方插件orafce或者是亞馬遜的aws_oracle_ext,使用第三方插件的to_date函數(shù)。


坑主駕到(二)

  序列順序問(wèn)題


這個(gè)問(wèn)題是我們創(chuàng)建了序列,開(kāi)發(fā)使用的時(shí)候發(fā)現(xiàn)序列產(chǎn)生的值居然比當(dāng)前序列最大值還要小。

這個(gè)問(wèn)題的主要原因就是Oracle和PostgreSQL在序列上有差異,我們主要來(lái)觀察一下PG的行為:

1、先創(chuàng)建一個(gè)序列,起使值100,cache值20,會(huì)話(huà)A讀一下nextval。

2、接下類(lèi)在開(kāi)會(huì)話(huà)B,讀一下nextval,發(fā)現(xiàn)值變成了120。

注意按照Oracle數(shù)據(jù)庫(kù)的邏輯,此時(shí)序列的最大值已經(jīng)是120了。

3、返回到會(huì)話(huà)A,再次獲取nextval,發(fā)現(xiàn)值是101。

此時(shí)就出現(xiàn)了開(kāi)發(fā)遇到的情況:序列產(chǎn)生的值居然比當(dāng)前序列最大值還要小。

大多數(shù)序列只要不存在時(shí)間依賴(lài)關(guān)系,使用上都沒(méi)問(wèn)題。但是如果出現(xiàn)了數(shù)字小的序列一定要比數(shù)字大的序列時(shí)間早這種邏輯,就需要把序列的cache值設(shè)置成1。


坑主駕到(三)

  substr函數(shù)結(jié)果不一致


PostgreSQL

Oracle

Substr函數(shù)的起使位置要從1開(kāi)始,如果位置從0開(kāi)始,雖然有數(shù)據(jù)但是和Oracle不一致。


坑主駕到(四) 

  事務(wù)問(wèn)題


這個(gè)問(wèn)題我對(duì)Oracle、MySQL、PostgreSQL做了詳盡的測(cè)試,結(jié)論就是

OracleMySQL中,當(dāng)其他會(huì)話(huà)更新或刪除了選定的行時(shí),當(dāng)前會(huì)話(huà)在執(zhí)行事務(wù)之前將重新檢查最新的數(shù)據(jù)。PostgreSQL當(dāng)選定的行被其他會(huì)話(huà)更新或刪除時(shí),當(dāng)前會(huì)話(huà)將忽略這些行。

事務(wù)問(wèn)題會(huì)導(dǎo)致出現(xiàn)數(shù)據(jù)刪除丟失。需要應(yīng)用程序側(cè)考慮這個(gè)問(wèn)題進(jìn)行改造。


  結(jié)尾


由于篇幅的原因,今天的“入坑到出坑”娛樂(lè)節(jié)目,暫時(shí)介紹到這里。文中如有錯(cuò)誤,請(qǐng)大神們幫忙把“坑”填了。

END



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129996.html

相關(guān)文章

  • 微信小程序從入坑到放棄之坑八:textarea在蘋(píng)果手機(jī)中的大Bug

    摘要:順便補(bǔ)充一句,微信官方提供的判斷依舊不全面,最新出來(lái)的蘋(píng)果手機(jī)還沒(méi)有完全支持相關(guān)的坑可以在官方社區(qū)的問(wèn)答中找到。 首次在這里寫(xiě)點(diǎn)東西,還請(qǐng)各位大佬擔(dān)待點(diǎn)。 摘要:昨天的placeholder-class只是希望各位看官注意,而今天的textarea就絕對(duì)是一個(gè)超級(jí)大坑!而且如果看官手中沒(méi)有蘋(píng)果手機(jī)測(cè)試的話(huà),這個(gè)可就真的是個(gè)坑了!為啥?難道要等到用戶(hù)向你反饋你們產(chǎn)品有bug???.......

    dantezhao 評(píng)論0 收藏0
  • 渾渾噩噩10年,入坑軟件測(cè)試,6年干到測(cè)試leader,非科班的我也能當(dāng)程序員!

    摘要:今年歲,目前在某行業(yè)頭部企業(yè)任職測(cè)試負(fù)責(zé)人,管理人的測(cè)試團(tuán)隊(duì)。渾渾噩噩的年我年出生,年二本畢業(yè),專(zhuān)業(yè)是電子信息工程專(zhuān)業(yè)。轉(zhuǎn)行這年截止此時(shí)此刻,我已入坑近年時(shí)間,經(jīng)歷家互聯(lián)網(wǎng)公司,最近一份工作已有年之多,目前任職測(cè)試負(fù)責(zé)人。 ...

    WalkerXu 評(píng)論0 收藏0
  • 跳出ping++開(kāi)發(fā)中API請(qǐng)求異常問(wèn)題

    摘要:近期在做微信支付那方面的工作由于要在之前開(kāi)發(fā)人員的基礎(chǔ)上進(jìn)行開(kāi)發(fā)其中使用到了這個(gè)第方支付的。下面梳理下正常開(kāi)發(fā)的流程請(qǐng)點(diǎn)擊下面的鏈接付款。結(jié)果總是提示必須是組鍵值對(duì)。主要是官方?jīng)]有提供明確的請(qǐng)求頭信息給我們導(dǎo)致我們一直在兜圈。 近期在做微信支付那方面的工作,由于要在之前開(kāi)發(fā)人員的基礎(chǔ)上進(jìn)行開(kāi)發(fā),其中使用到了ping++這個(gè)第3方支付的SDK。不得不說(shuō),ping++的SDK做的挺簡(jiǎn)單的,...

    anonymoussf 評(píng)論0 收藏0
  • 跳出ping++開(kāi)發(fā)中API請(qǐng)求異常問(wèn)題

    摘要:近期在做微信支付那方面的工作由于要在之前開(kāi)發(fā)人員的基礎(chǔ)上進(jìn)行開(kāi)發(fā)其中使用到了這個(gè)第方支付的。下面梳理下正常開(kāi)發(fā)的流程請(qǐng)點(diǎn)擊下面的鏈接付款。結(jié)果總是提示必須是組鍵值對(duì)。主要是官方?jīng)]有提供明確的請(qǐng)求頭信息給我們導(dǎo)致我們一直在兜圈。 近期在做微信支付那方面的工作,由于要在之前開(kāi)發(fā)人員的基礎(chǔ)上進(jìn)行開(kāi)發(fā),其中使用到了ping++這個(gè)第3方支付的SDK。不得不說(shuō),ping++的SDK做的挺簡(jiǎn)單的,...

    Lin_R 評(píng)論0 收藏0
  • DOM元素動(dòng)態(tài)監(jiān)聽(tīng)

    摘要:今天遇到一個(gè)一直認(rèn)為很簡(jiǎn)單的問(wèn)題,真正接手后才知道這么可怕大體是這樣的,默認(rèn)動(dòng)態(tài)加載的應(yīng)該是自動(dòng)向下,當(dāng)遇到頁(yè)面最下面應(yīng)該自動(dòng)向上渲染。動(dòng)態(tài)生成的都是根據(jù)來(lái)監(jiān)聽(tīng)獲取元素的信息。 今天遇到一個(gè)一直認(rèn)為很簡(jiǎn)單的問(wèn)題,真正接手后才知道這么可怕 大體是這樣的,默認(rèn)動(dòng)態(tài)加載的card應(yīng)該是自動(dòng)向下,當(dāng)card遇到頁(yè)面最下面應(yīng)該自動(dòng)向上渲染。showImg(https://segmentfault...

    wh469012917 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<