猿创征文|达梦数据库入门指南(五)- 达梦数据库兼容适配常见问题原因分析与解决

本文列举并解答了在使用达梦数据库过程中常见的十二个问题,包括字段内容超长错误、语句分析错误、分组查询错误等,并提供了具体的解决办法。

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

达梦数据库常见问题描述与分析

问题一:字段内容超长错误

原因: 达梦数据库和Oracle数据库对字段的长度有严格的规范,当然Mysql也是有的,但是默认是不启用的,哪怕超出了,也会自动扩容,但是Oracle和达梦是不会的;
解决方案:
①修改达梦数据库的字段长度进行适配;
②变更超长的数据类型;
③约束字段长度,或者进行截取处理

问题二:语句分析错误,不识别[`]符号

原因: 在Mysql中“`” 符号是为了防止和Mysql的系统字段冲突,标识这个一个普通字段,但是在达梦数据库中,不识别这个符号;
解决方案:
①采用MyBatis的拦截器对SQL进行拦截处理;
②对XML中的SQL里面的[`]符号进行删除替换(推荐);

问题三:不是GROUP by 表达式

原因: 因为在Oracle和达梦中,查询字段必须在分组中出现,所以报错;
解决方案:
①去掉Sql中查询的不是分组的字段,通过代码二次查询实现;

问题四:on duplicate key update语法分析错误

原因: 属于Mysql专用语法,在Oracle和达梦中是不支持的
解决方案:
①可以通过开启达梦数据库兼容Mysql模式

问题五:达梦数据库concat函数不认识[“]符号

原因: 属于Mysql专用语法,在Oracle和达梦中是不支持的
解决方案:
①可以通过开启达梦数据库兼容Mysql模式
②修改sql语句

问题六:语句分析错误,不识别[“]符号

原因: 在Mysql中无论是[‘][“]都是识别的,但是在达梦中只识别[‘];
解决方案:
①用[‘]替换项目中的[“];

问题七:查询的结果错误,显示为[‘***’]

原因:达梦数据库查询列别名时使用[‘***’]包裹,不会报错,但是会将’***‘赋值给结果集

解决方案:
①使用双引号[“”]包裹列名关键字

问题八:convert函数报错

原因: 达梦中的convert和mysql的使用方式是相反的。
解决方案:
①换为convert(type,value)

问题九:TO_DATE(NOW(),‘yyyy-MM-dd’) 报错

原因: 日期函数不一致
解决方案:
①改为DATE_FORMAT(SYSDATE, ‘%Y-%m-%d’)

问题十:建的表无法查询

可能原因: 达梦数据库大小写敏感,因此在建表时候,需要注意字段大小写,若使用小写建表,将会出现建表成功,无法插入任何数据;
解决方案:
①重新建表,注意大小写

问题十一:建表后无法插入自增列数据

可能原因: 达梦数据库默认自增列的值不允许修改和更新
解决方案:
①手动插入自增列,将IDENTITY_INSERT设置为ON
SET IDENTITY_INSERT 模式名.表名 on

问题十二:DATE_ADD 函数报错,返回一个日期或时间值加上一个时间间隔的时间值

可能原因:达梦不兼容 DATE_ADD ,示例:SELECT DATE_ADD(‘2020-07-12 12:20:30’,INTERVAL ‘2’ DAY);
解决方案:使用 ADD_DAYS 函数替换,示例:SELECT add_days(‘2020-07-12 12:20:30’,2);

历史文章:
达梦数据库(一)- 安装与初始化
达梦数据库(二)- 达梦数据库概念说明
达梦数据库入门指南(三)- 模式概念与基本使用
达梦数据库入门指南(四)- 数据迁移

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值