字段内容超长错误:
达梦数据库和Oracle同样,对字段的长度有严格的规范,当然Mysql也是有的,但是默认是不启用的,哪怕超出了,也会自动扩容,但是Oracle和达梦是不会的;
对数据库的字段长度进行变更;
变更数据类型;
约束字段长度,或者进行截取处理
语句分析错误,不识别[`]符号
在Mysql中[`]符号是为了防止和Mysql的系统字段冲突,标识这个一个普通字段,但是在达梦数据库中,不识别这个符号;
采用MyBatis的拦截器对SQL进行拦截处理;
对XML中的SQL里面的[`]符号进行删除替换(推荐);
不是GROUP by 表达式
因为在Oracle和达梦中查询字段必须在分组中出现,所以报错
修改代码,去掉Sql中查询的不是分组的字段,通过代码二次查询实现;
on duplicate key update语法分析错误
属于Mysql专用语法,在Oracle和达梦中是不支持的
使用Merge修改(不推荐)
修改前:
insert into sys_logininfo(info_id,infp_name) values(1,2) on duplicate key update info_id=2,infp_name=’aaa’;
修改后:
merge into sys_logininfo t1 using(
select 1 info_id,2 infp_name from dual
) t2 on
(t1.info_id=t2.info_id)
WHEN MATCHED THEN
update set info_id=2,infp_name=’aaa’ WHEN NOT MATCHED THEN INSERT VALUES (1,2);
https://blog.csdn.net/jackpk/article/details/50336941
在使用druid连接池时,报了一个错,但是并不影响
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :' MERGE INTO sys_logininfo t1 US', expect MERGE, actual IDENTIFIER pos 82, line 1, column 1, token IDENTIFIER MERGE
通过代码拆分insertOrUpdate 拆分为insert和update
前端展示空白,后端没有报错
因为Mysql迁移到了达梦,所以字段全部由小写转换为大写,本身返回Bean是没有问题的,但是一些特殊的SQL返回的是List所以结果Key全部为大写,所以前端调用时为小写,所以无法展示;
前端修改代码;
定义一个VO,把后端的返回的List,转成定义的VO,返回前端;
达梦数据库concat函数不认识[“]符号
在Mysql中无论是[‘][“]都是识别的,但是在达梦中只识别[‘];
用[‘]替换项目中的[“];
修改前:
select * from aa where a like CONCAT(“%”,”龙”,”%”);
修改后:
select * from aa where a like CONCAT(‘%’,’龙’,’%’);
达梦数据库查询列别名时使用[‘’]包裹,是会报错的
达梦数据库在做关键字区分时采用[“”]包裹
采用[“”]替换[‘’]
不带关键字
修改前:
select aa as ‘a’ from aaa;
修改后
select aa as a from aaa;
带关键字
修改前:
select aa as ‘index’ from aaa;
修改后:
select aa as “index” from aaa;
使用concat直接包裹字段,会报错,无法解析的表达式
达梦不支持无条件的拼接
去掉concat
修改前:
select concat(aaa) as a from aa;
修改后:
select aaa as a from aa;
作者:彼岸舞
时间:2020\06\23
内容关于:达梦数据库
本文属于作者原创,未经允许,禁止转发
posted on 2020-06-23 11:53 彼岸舞 阅读(921) 评论(0) 编辑 收藏