注册
记一次MySQL迁移达梦开发使用达梦问题记录
技术分享/ 文章详情 /

记一次MySQL迁移达梦开发使用达梦问题记录

zero 2023/02/27 3027 0 0

1、达梦同步回MySQL报错 data too long
image.png
原因解释:底层存储原理差异
达梦以字符为单位 varchar(500) 能存5004=2000个字节,能存2000个英文字母,能存2000/3=666个中文
mysql varchar(500) 能存500个英文字母,500个中文
所以达梦是非中文的varchar(500) mysql要
4 varchar(2000)才能够存,否则只能存500个字母。
达梦是中文的varchar(500),mysql要varchar(667) 才够存。
处理方式:根据实际情况扩充mysql数据类型定义长度,或者程序上限制。

2、数据溢出
image.png

原因解释:存储过程中数据类型定义为int ,当bingint 时 int类型长度不够,
处理方式:统一数据类型定义,如int改为bigint

3、from超过100个表
image.png
原因解释:达梦最多致辞后100张表,若遇到有规律的语句,可以缩小单个查询表涉及的数量用union all方式拼接

4、除0错误
image.png
原因解释:达梦不允许除数是0的语法。
解决方法:用decode将除数含0的字段抓换成null处理。

5、字符串转换出错
原因解释:在varchar类型字段和int类型字段等值比较过程中,varchar存在字母、空格等非中文内容,造成不能隐式转换成数据类型做比较
处理方式:首先建议尽量避免隐式转换,提高执行效率,若必须比较 通过 to_cast、convert函数把int转换成varchar进行等值比较。

6、数据类型变更无效
image.png
原因解释:针对text、blob、clob等大字段,无法将普通数据类型更改成大字段类型
处理方式:导出表数据备份,重新创建表后,导入数据

7、JDBC程序获取表名大小写不一致
检查是否大小写敏感
jdbc 连接串后加上参数 &columnNameUpperCase=0

8、结果集取小数
参数calc_as_decimal控制 1表示取小数
image.png
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服