• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無(wú)以明志,非寧?kù)o無(wú)以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評(píng)論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            MySQL切換PostgreSQL注意事項(xiàng)

            # 切換流程
            postgres相比mysql多了一層模式(Schema)的概念, 一個(gè)數(shù)據(jù)庫(kù)下可以有多個(gè)模式。 這里的模型名等價(jià)于以前的mysql的數(shù)據(jù)庫(kù)名。如果不指定默認(rèn)是public。

            # 注意事項(xiàng)
            1、
            參數(shù)值不能用雙引號(hào),需用單引號(hào)
            2、字段名不能用``包起來(lái),直接去掉就可以
            3、json字段處理語(yǔ)法不同:
            mysql是用 -> '$.xxx'的語(yǔ)法去選取的, 而 postgreSQL 得用 ->>'xx' 語(yǔ)法選擇屬性
            4、
            postgreSQL沒(méi)有convert函數(shù),用CAST函數(shù)替換
            5、
            mysql可以使用force index強(qiáng)制走索引, postgres沒(méi)有,建議去掉
            6、
            postgreSQL沒(méi)有ifnull函數(shù),用COALESCE函數(shù)替換
            7、
            postgreSQL沒(méi)有date_format函數(shù),用to_char函數(shù)替換。例子:
            to_char(time,'YYYY-MM-DD') => DATE_FORMAT(time,'%Y-%m-%d')
            to_char(time,'YYYY-MM') => DATE_FORMAT(time,'%Y-%m')
            to_char(time,'YYYYMMDDHH24MISS') => DATE_FORMAT(time,'%Y%m%d%H%i%s')
            8、
            postgreSQL 的 select的字段必須是group by的字段里的 或者使用了聚合函數(shù)。mysql則沒(méi)有這個(gè)要求,非聚合列會(huì)隨機(jī)取值
            錯(cuò)誤例子
            select name, age, count(*)from user group by age, score

            這時(shí) select name 是錯(cuò)誤的, 應(yīng)為group by里沒(méi)有這個(gè)字段,要么加上,要么變成select min(name)
            9、
            Postgres數(shù)據(jù)庫(kù)中,同一事務(wù)中如果某次數(shù)據(jù)庫(kù)操作中出錯(cuò)的話,那這個(gè)事務(wù)以后的數(shù)據(jù)庫(kù)操作都會(huì)出錯(cuò)。如果有人去捕獲了事務(wù)異常后又去執(zhí)行數(shù)據(jù)庫(kù)操作就會(huì)導(dǎo)致這個(gè)問(wèn)題。mysql貌似不會(huì)有這個(gè)問(wèn)題,解決方法用if else替代異常
            10、mysql是支持自動(dòng)類(lèi)型轉(zhuǎn)換的,postgreSQL是強(qiáng)數(shù)據(jù)類(lèi)型,字段類(lèi)型和參數(shù)值類(lèi)型之間必須一樣否則就會(huì)拋出異常。
                  解決辦法一般有兩種:手動(dòng)修改代碼里的字段類(lèi)型和傳參類(lèi)型保證 或者 postgreSQL表字段類(lèi)型,反正保證雙方一一對(duì)應(yīng);手動(dòng)添加自動(dòng)隱式轉(zhuǎn)換函數(shù),達(dá)到類(lèi)似mysql的效果
                  不要亂添加隱式轉(zhuǎn)換函數(shù),可能導(dǎo)致   Could not choose a best candidate operator 異常 和 # operator is not unique 異常 就是在操作符比較的時(shí)候有多個(gè)轉(zhuǎn)換邏輯不知道用哪個(gè)了,死循環(huán)了
            11、postgreSQL輔助腳本

            批量修改timestamptz腳本,修改表字段類(lèi)型 timestamptz 為 timestamp, 因?yàn)槲覀冋f(shuō)過(guò)前者無(wú)法與LocalDateTime對(duì)應(yīng)上
            timestamp without time zone 就是 timestamp;timestamp with time zone 就是 timestamptz
            DO $$DECLARE    rec RECORD;BEGIN    FOR rec IN SELECT table_name, column_name,data_type               FROM information_schema.columns               where table_schema = '要處理的模式名'                AND data_type = 'timestamp with time zone'    LOOP        EXECUTE 'ALTER TABLE ' || rec.table_name || ' ALTER COLUMN ' || rec.column_name || ' TYPE timestamp';    END LOOP;END $$;

            批量修改模式名下的所有字段類(lèi)型為timestamp的并且字段名為 create_time 或者 update_time的字段的默認(rèn)值為 CURRENT_TIMESTAMP-- 注意 || 號(hào)拼接的后面的字符串前面要有一個(gè)空格
            -- 注意 || 號(hào)拼接的后面的字符串前面要有一個(gè)空格DO $$DECLARE    rec RECORD;BEGIN    FOR rec IN SELECT table_name, column_name,data_type               FROM information_schema.columns               where table_schema = '要處理的模式名'                  AND data_type = 'timestamp without time zone'                 -- 修改的字段名             and column_name in ('create_time','update_time')    LOOP         EXECUTE 'ALTER TABLE ' || rec.table_name || ' ALTER COLUMN ' || rec.column_name || ' SET DEFAULT CURRENT_TIMESTAMP;';    END LOOP;END $$;

            posted on 2024-07-15 17:52 Benjamin 閱讀(71) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 數(shù)據(jù)庫(kù)

            少妇被又大又粗又爽毛片久久黑人| 国产视频久久| 免费精品久久久久久中文字幕| 亚洲成av人片不卡无码久久| 一本大道久久东京热无码AV | 精品久久久久久久中文字幕| 91久久精品国产91性色也| 久久亚洲色一区二区三区| 久久亚洲精品国产精品婷婷 | 久久综合狠狠综合久久激情 | 亚洲国产高清精品线久久 | 久久久久久久综合日本亚洲| 天天久久狠狠色综合| 一级A毛片免费观看久久精品| 久久精品一区二区三区不卡| 久久中文字幕视频、最近更新 | 久久久久亚洲Av无码专| 欧美精品一区二区精品久久 | 国产成人精品久久亚洲高清不卡| 中文字幕乱码久久午夜| 久久精品无码一区二区三区| 日韩人妻无码一区二区三区久久99| 精品久久久无码中文字幕天天| 精品国产一区二区三区久久久狼| 久久久久亚洲精品日久生情| 99久久er这里只有精品18| 亚洲午夜久久影院| 人妻无码αv中文字幕久久琪琪布| 亚洲中文字幕久久精品无码喷水 | 国产AV影片久久久久久| 久久婷婷人人澡人人爽人人爱| 一本一本久久aa综合精品 | 国产女人aaa级久久久级| 亚洲国产欧洲综合997久久| 国产精久久一区二区三区| 精品久久久久久久无码| 777午夜精品久久av蜜臀| 很黄很污的网站久久mimi色| 97久久精品国产精品青草| 久久久久久久久久久| 中文成人久久久久影院免费观看|