1、达梦同步回MySQL报错 data too long
原因解释:底层存储原理差异
达梦以字符为单位 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、数据溢出
原因解释:存储过程中数据类型定义为int ,当bingint 时 int类型长度不够,
处理方式:统一数据类型定义,如int改为bigint
3、from超过100个表
原因解释:达梦最多致辞后100张表,若遇到有规律的语句,可以缩小单个查询表涉及的数量用union all方式拼接
4、除0错误
原因解释:达梦不允许除数是0的语法。
解决方法:用decode将除数含0的字段抓换成null处理。
5、字符串转换出错
原因解释:在varchar类型字段和int类型字段等值比较过程中,varchar存在字母、空格等非中文内容,造成不能隐式转换成数据类型做比较
处理方式:首先建议尽量避免隐式转换,提高执行效率,若必须比较 通过 to_cast、convert函数把int转换成varchar进行等值比较。
6、数据类型变更无效
原因解释:针对text、blob、clob等大字段,无法将普通数据类型更改成大字段类型
处理方式:导出表数据备份,重新创建表后,导入数据
7、JDBC程序获取表名大小写不一致
检查是否大小写敏感
jdbc 连接串后加上参数 &columnNameUpperCase=0
8、结果集取小数
参数calc_as_decimal控制 1表示取小数
文章
阅读量
获赞