不同版本的达梦数据库也可能会报列长度超出定义的错
根本原因就是数据在mysql中和达梦中存储的长度不一样,会不会报错需要看达梦数据库的两个参数:字符集,和是否以字符为单位存储。
当达梦编码为utf-8,且长度以字符为单位存储为否时,一个mysql的字符,需要达梦数据库中3个字符的长度,也就是mysql中的varchar(1)对应达梦中varchar(3)。
如果编码为GB18030,那么这个关系就是1:2
但是如果设置长度以字符为单位为:是,则是1:1的关系。
达梦数据库中查询这两个参数的SQL语句是:select * from v$option;
GLOBAL_CHARSET: 0表示GB18030,1表示UTF-8,2代表韩文字符集ENU-KR,默认为0。
LENGTH_IN_CHAR: 0表示长度不是以字符为单位,1表示长度以字符为单位,默认为0。
这两个都需要在数据库实例初始化的时候设置好。
如果不能重新初始化数据库,就只能增加达梦的字段长度再进行迁移了:
alter table 表名 modify 字段名 varchar(3倍mysql长度) ;