達夢數據庫遷移(三)

前言

前面兩篇文章,介紹了一些遷移前的準備工做,實現了數據的導入,可是當我將數據導入到DM後,啓動了本身的項目,接下來一堆報錯接踵而至,總結了一些常見的報錯,在這裏作個記錄。前端

報錯記錄

關鍵字

達夢數據庫的關鍵字是雙引號(""),而mysql的關鍵字是反引號(``),因此一些sql的字段加了關鍵字的,只能作下替換。
此次替換其實後來發現替換的地方還挺多的,究其緣由,仍是在設計MYSQL表字段的時候,起名字不規範引發的,用了一些關鍵字作了字段名,如key、code等字段名。
真是偷懶一時爽,改起來火葬場java

mybatis大小寫轉換

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

  • group_concat() 替換成 wm_concat()
  • 去除STR_TO_DATE()
  • 不支持 from_unixtime 函數,使用 round 代替

我的以爲,數據庫是提供了一些比較方便的函數,可是若是項目爲了兼容性更強,或者強依賴索引,仍是在業務層處理比較好。mybatis

mybatisplus查詢有達夢的關鍵字

實體類添加以下:app

@TableField("\"logic\"")
    private String logic;

varchar和text

text字段沒法distinct,group by,order by,建議改成varcharide

結語

將上面的問題修改完成後,系統確實能夠運行了起來,接下來要思考的就是,如何能夠一套代碼兼容兩個數據庫。

相關文章
相關標籤/搜索