1、liquibase脚本
(1)达梦数据库不支持,修改字段varchar改成blob
<changeSet author="ly" id="v3.0_4_202307111505_101"> <renameColumn tableName="PC_SS_ZRQD" oldColumnName="BHNR" newColumnName="BHNR" columnDataType="TEXT" remarks="包含内容(信息项)"/> </changeSet>
可以增加数据库判断,mysql就是text,达梦就修改成varchar(5000)
<changeSet author="ly" id="v3.0_4_202307111505_101"> <preConditions onFail="MARK_RAN"> <columnExists tableName="PC_SS_ZRQD" columnName="BHNR"/> <dbms type="mysql"/> </preConditions> <renameColumn tableName="PC_SS_ZRQD" oldColumnName="BHNR" newColumnName="BHNR" columnDataType="TEXT" remarks="包含内容(信息项)"/> </changeSet>
2、mysql的char(32)和达梦char(32)有区别
mysql如果字段定义是char(32),如果内容是1,数据表存的就是1
达梦如果字段定义是char(32),如果内容是1,数据表存的就是1加31个空格
所以对于变长的字段,达梦建议改成varchar(32)
3、group by区别
(1)下面sql达梦会报错
SELECT t1.mbbh,count(1) from Sqd GROUP BY t1.mbId
mysql不会报错,达梦会报错
达梦的select返回值,必须在group by里面,需要改成
SELECT t1.mbbh,count(1) from Sqd GROUP BY t1.mbId,t1.mbbh
(2)select zd ,count(1) from test
mysql不会报错,达梦会报错
达梦不支持select 字段1,字段2,count(1),不带group by的写法
4、order by区别
SELECT t1.mbbh,count(1) from Sqd GROUP BY t1.mbId,t1.mbbh order by t1.cjsj
这个sql,mysql支持,达梦会报错。使用group by时,达梦的order by字段,必须在select中
SELECT t1.mbbh,max(t1.cjsj) as cjsj,count(1) from Sqd GROUP BY t1.mbId,t1.mbbh order by cjsj
原因:达梦执行过程
1、先执行group by,把结果生成一个临时表
2、order by是对临时表进行排序
所以,如果select 不包含排序字段会报错
5、索引唯一校验不同
达梦数据库索引名称,要全库唯一,不是表维度唯一
例如,在mysql存在数据表, zyxx, mlxx2个表,对id都建了id_index索引,在mysql不会报错
在达梦数据库会报错
6、distinct和order by 一起使用
达梦 distinct和order by 一起使用, 如果查询结果不包含order by字段会报错
select distinct a from test order by b
mysql不报错,达梦报错。
达梦语法:select distinct a,b from test order by b
标签:jpa,适配,mbbh,t1,报错,mysql,order,达梦 From: https://blog.csdn.net/s07aser123/article/details/142214092