达梦和mysql冲突吗_MySQL适配达梦数据库注意事项

本文详细介绍了在使用达梦数据库时遇到的一些与MySQL的不兼容问题,包括jdbc驱动下载、版本匹配、Hibernate方言设置、时间函数不支持、LAST_INSERT_ID()替换、关键字冲突以及字符串拼接等,并提供了相应的解决方法,帮助开发者更好地进行数据库迁移和适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题说明:达梦数据库jdbc驱动无法下载

现象描述: 在pom文件里配置了,大多数服务器里没有相应的jar包,因此没法自动下载

解决方法: 手动将相应jar包放到仓库里

问题说明:达梦数据库jdbc驱动版本

现象描述: 使用 低版本的驱动,在sql语句上的写法可能会不同,例如查询时要加上模式名等

解决方法: 使用下面这个版本驱动,sql语句大部分和mysql一样

com.dm

jdbc

1.8

问题说明:hibernate方言驱动

现象描述: 程序中用到了hibernate,需要在配置文件里手动指定hibernate方言的驱动,否则启动会报错

解决方法: 配置文件中的配置

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

使用的hibernate驱动版本,这个驱动也需要手动下载添加

com.dameng

DmDialect-for-hibernate5.3

8.1.0.157

问题说明:达梦不支持mysql默认时间函数

现象描述: 使用达梦数据库字段的迁移工具,从mysql迁移数据库到达梦里时,如果mysql里表的时间字段设置了默认值,使用的是CURRENT_TIMESTAMP函数,在达梦8里迁移会报错,达梦7可正常迁移

解决方法: 先将mysql中的表的默认值去掉,把表结构导过去之后,再在达梦中执行语句alter table 表名 modify 字段名 default sysdate

问题说明:达梦数据库不支持LAST_INSERT_ID()

现象描述: 在mysql里新增数据,需要返回刚新增数据的自增主键值,在mybatis里按如下写法

select LAST_INSERT_ID()

达梦数据库不支持上述写法

解决方法: 在达梦数据库中创建序列

CREATE SEQUENCE config_id_seq INCREMENT BY 1 START WITH 1

将mybatis里的写法换成

SELECT config_id_seq.nextval as id from dual

问题说明: mysql表字段 与达梦数据库关键字冲突

现象描述: mysql里的表字段,取的名字正好是达梦数据的关键字,那么在达梦数据库里使用时,会报错,例如comment是达梦数据库的关键字,mysql里有表的字段取了comment,在mybatis里执行包含comment的查询,新增等语句时会报错,下面这个语句就会报错,因为包含comment

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})

解决方法: 将名字为关键字的表字段换个名字,然后把xml里的sql语句相关字段名字都换了

问题说明:达梦数据库不支持某些mybatis字符串的拼接写法

现象描述: mybatis里"%"#{name}"%"这种写法达梦数据库会报错

解决方法: 使用函数CONCAT(’%’,#{name},’%’),双引号变成单引号

问题说明:达梦数据库界面工具使用

现象描述: 达梦数据库表,数据的操作基本上只能通过写sql语句的方式

实现,没有mysql那样强大的客户端

解决方法: 根据官方文档写sql语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值