oralce遷移Mysql問題總結

2022-05-21 18:00:12 字數 1698 閱讀 7452

最近從oracle資料庫遷移到mysql, 總結了一些不相容和需要注意的地方,持久層用的mybatis

1 guid盡量用**生成

現象:sys_guid()  mysql報錯,mysql對應的為uuid(),但是帶橫線,需要替換為  replace(uuid(),'-',''),所以最好用**生成, 這樣直接就通用了

2 最好不用nvl、ifnull等特性函式

現象:nvl為oracle特性函式,在mysql報錯,統一替換為case when then else end

3 子查詢請帶上別名

現象:子查詢不帶別名oracle可以通過,mysql語法錯誤

4 最好不用decode()函式

現象:同nvl,替換為case when then else end

5 刪除語句不要給表加別名

現象:mysql刪除語句不支援表別名(但是oracle支援,所以為了通用刪除時不要使用別名)

6 刪除語句最好加上from關鍵字

現象:   mysql刪除必須是delete from  table,oracle可以是delete table為了通用要加上from

7 字段別名統一大寫

現象:mysql沒有自動轉換為大寫,oracle會自動轉換為大寫,為了**能統一取值,別名統一大寫

8 分頁查詢沒有找到相容的寫法,找到簡單改寫方法

簡單修改的辦法:rownum替換為@num,不然就是重新寫乙個mysql分頁

原oracle

9 批量插入不要用insert all,用相容寫法

現象:insert all等語法mysql不支援,報錯

改為

10 日期無法相容,有轉換方法

現象:之前的to_date寫法導致mysql報錯

改為拆分兩份

11不用 || 連字元

現象:mysql不支援,統一改為concat(str,str2)函式

12 concat函式只能使用兩個引數

現象:不能使用concat(str,str2,str3),mysql支援,oracle不支援

13 wm_concat()行列轉換無法相容,有轉換方法

方案:oracle wm_concat() 對應mysql group_concat()

14 從oracle遷移到mysql的資料,number型別被mysql預設成了這個鬼樣子(不確定是不是遷移引起)

現象:mysql顯示型別

導致報錯

其實1、2、3、4、5、6、7、9、11、12項是可以加入開發規範和開發禁用列表的

ORALCE資料遷移

資料庫遷移方法 1 匯出 exp 1 使用者名稱 密碼 資料庫名 rows y indexes y compress n buffer 65536 feedback 100000 file f 生產環境資料庫備份 20141119 product.dmp log f 生產環境資料庫備份 201411...

MySQL資料遷移問題一

mysql的資料遷移比較簡單,但有幾點一定要注意 當啟用innodb引擎,在my.ini中有乙個配置項 innodb log file size 必須保證移植前後這個配置值是相同的,不然服務無法啟動 如果不知道這個值咋辦呢,檢視日誌 innodb error log file ib logfile0...

MySQL遷移(5 5 5 7)導致的問題

因為伺服器要過期了所以將資料庫裡的資料遷移到新的庫中,新庫的配置比老庫要高階好多,配置檔案沒有區別,唯一就是版本不同。在那天,就是那一天,把服務上線的時候,照例測試時,發現所有的查詢速度非常慢,慢的令人髮指,並且無法插入表情,所以排查導致的原因,並且解決問題。對相同的sql發現測試庫 還是5.5 和...