遷移過程
項目數據庫從達夢數據庫遷移到mysql,不遷移數據,只遷移表結構。當中通過調試踩了不少坑,把遷移過程記錄一下。
一、 在達夢新建數據庫
利用達夢數據管理工具新建一個數據庫,運行項目sql文件
二、 利用DM數據遷移工具遷移
用sqlyog連接mysql數據庫,新建數據庫tyqx-test。利用DM數據遷移工具,從DM遷移到mysql。其中表中的datetime類型遷移到mysql會默認映射為timestamp,把所有的timestamp類型數據改為datetime(6),默認值為CURRENT_TIMESTAMP(6),注意時間精度,如果只填datetime默認只精確到秒,涉及時間排序的時候精度會受到影響,6意味着小數點后六位。其中的longvarchar字段會自動映射為longtext,改為text字段。默認導出后不帶字段的注釋,需要自己添加上注釋。
三、 導出sql
在連接工具中導出建表sql語句。作為建表sql---create.sql。
修改項目原項目中的修改sql的語句。差異主要在於:
去除表名和列名的雙引號,然后所有涉及mysql關鍵字的列名,例如order、sql加上反引號。
四、 修改所有實體類關鍵詞字段
修改實體類設計mysql關鍵字的字段的@Tablefield,order、sql等,加上反引號。
五、 修改mapper.xml語句
項目中用到mybatis框架,檢查mapper.xml中涉及mysql關鍵字的字段,例如order、sql、path,加上反引號。
去除msql不支持的tochar等函數。
去除所有insert語句列名的雙引號。
六、 時間檢索問題
“yyyy-MM-dd “模式的時間檢索(例如2021-12-01),達夢檢索小於”2021-12-01“時,不包括當天的數據,mysql檢索時包括當天數據。之前的處理是把endTime+1天在達夢中檢索,換到mysql會導致查詢出后一天的數據。在Mysql中把涉及到時間的查詢,加上”00:00:00”和”23:59:59”提高時間精度進行查詢,不需要將endTime加一天。如果不提高精度。Mysql檢索大於等於”2021-12-01”且小於等於”2021-12-01”無法檢索出當天的數據。