MySQL適配達夢數據庫注意事項

問題說明:達夢數據庫jdbc驅動無法下載

現象描述: 在pom文件裏配置了,大多數服務器裏沒有相應的jar包,因此沒法自動下載
解決方法: 手動將相應jar包放到倉庫裏

問題說明:達夢數據庫jdbc驅動版本

現象描述: 使用 低版本的驅動,在sql語句上的寫法可能會不同,例如查詢時要加上模式名等
解決方法: 使用下面這個版本驅動,sql語句大部分和mysql一樣

<dependency>
   <groupId>com.dm</groupId>
   <artifactId>jdbc</artifactId>
   <version>1.8</version>
</dependency>

問題說明:hibernate方言驅動

現象描述: 程序中用到了hibernate,需要在配置文件裏手動指定hibernate方言的驅動,否則啓動會報錯
解決方法: 配置文件中的配置

spring. jpa.properties.hibernate=dialect: org.hibernate.dialect.DmDialect

使用的hibernate驅動版本,這個驅動也需要手動下載添加

<dependency>
   <groupId>com.dameng</groupId>
   <artifactId>DmDialect-for-hibernate5.3</artifactId>
   <version>8.1.0.157</version>
</dependency>

問題說明:達夢不支持mysql默認時間函數

現象描述: 使用達夢數據庫字段的遷移工具,從mysql遷移數據庫到達夢裏時,如果mysql裏表的時間字段設置了默認值,使用的是CURRENT_TIMESTAMP函數,在達夢8裏遷移會報錯,達夢7可正常遷移
解決方法: 先將mysql中的表的默認值去掉,把表結構導過去之後,再在達夢中執行語句alter table 表名 modify 字段名 default sysdate

問題說明:達夢數據庫不支持LAST_INSERT_ID()

現象描述: 在mysql裏新增數據,需要返回剛新增數據的自增主鍵值,在mybatis裏按如下寫法

<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER">
          select LAST_INSERT_ID()
</selectKey>

達夢數據庫不支持上述寫法

解決方法: 在達夢數據庫中創建序列

CREATE SEQUENCE config_id_seq INCREMENT BY 1 START WITH 1

將mybatis裏的寫法換成

<selectKey keyColumn="id" resultType="long" keyProperty="id" order="BEFORE">
   SELECT  config_id_seq.nextval as id from dual
</selectKey>

問題說明: mysql表字段 與達夢數據庫關鍵字衝突

現象描述: mysql裏的表字段,取的名字正好是達夢數據的關鍵字,那麼在達夢數據庫裏使用時,會報錯,例如comment是達夢數據庫的關鍵字,mysql裏有表的字段取了comment,在mybatis裏執行包含comment的查詢,新增等語句時會報錯,下面這個語句就會報錯,因爲包含comment

<insert id="insert" parameterType="com.casic.ETL.entity.EtlWholeDBMigrate">
  insert into etl_whole_db_migrate (task_id, task_name, src_ds_id,
  tgt_ds_id, task_type, task_cron,comment)
  values (#{taskId,jdbcType=INTEGER},
  #{taskName,jdbcType=VARCHAR},
  #{srcDsId,jdbcType=INTEGER},
  #{tgtDsId,jdbcType=INTEGER}, 
  #{taskType,jdbcType=INTEGER},   
  #{taskCron,jdbcType=VARCHAR},
  #{comment,jdbcType=VARCHAR})
</insert>

解決方法: 將名字爲關鍵字的表字段換個名字,然後把xml裏的sql語句相關字段名字都換了

問題說明:達夢數據庫不支持某些mybatis字符串的拼接寫法

現象描述: mybatis裏"%"#{name}"%"這種寫法達夢數據庫會報錯
解決方法: 使用函數CONCAT(’%’,#{name},’%’),雙引號變成單引號

問題說明:達夢數據庫界面工具使用

現象描述: 達夢數據庫表,數據的操作基本上只能通過寫sql語句的方式
實現,沒有mysql那樣強大的客戶端
解決方法: 根據官方文檔寫sql語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章