前面兩篇文章,介紹了一些遷移前的準備工做,實現了數據的導入,可是當我將數據導入到DM後,啓動了本身的項目,接下來一堆報錯接踵而至,總結了一些常見的報錯,在這裏作個記錄。前端
達夢數據庫的關鍵字是雙引號(""),而mysql的關鍵字是反引號(``),因此一些sql的字段加了關鍵字的,只能作下替換。
此次替換其實後來發現替換的地方還挺多的,究其緣由,仍是在設計MYSQL表字段的時候,起名字不規範引發的,用了一些關鍵字作了字段名,如key、code等字段名。
真是偷懶一時爽,改起來火葬場java
mybatis在咱們開啓了以下配置mysql
mapUnderscoreToCamelCase:true
後,在mabatis的mapper文件寫了以下sql後:sql
<select id="queryDeviceByPage" resultType="map" parameterType="map"> select t1.id as id, t1.work_id as workId, t1.work_ip as workIp, t1.work_moudle workMoudle from xxx t1 </select>
發現並無在前端轉成駝峯命名,而是變成了一堆小寫,究其緣由,仍是達夢數據庫的Driver和mysql的Driver實現有點差異,感興趣能夠去研究源碼,將sql改成以下內容便可:數據庫
select t1.id as id, t1.work_id as work_id, t1.work_ip as work_ip, t1.work_moudle work_moudle from xxx t1
建議mapper文件使用resultMap實體映射bash
mysql當中有些函數達夢是不適用的,須要作些適配markdown
我的以爲,數據庫是提供了一些比較方便的函數,可是若是項目爲了兼容性更強,或者強依賴索引,仍是在業務層處理比較好。mybatis
實體類添加以下:app
@TableField("\"logic\"") private String logic;
text字段沒法distinct,group by,order by,建議改成varcharide
將上面的問題修改完成後,系統確實能夠運行了起來,接下來要思考的就是,如何能夠一套代碼兼容兩個數據庫。