为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8 03134284336-20250117-257733-20132
【操作系统】:centos 7
【CPU】:intel 16核
【问题描述】*:
从DM8 2024年旧版本导入到新版本,旧数据库length_in_char=1,在DTS迁移工具的“数据类型映射”中配置“强制为字符存储”,但是未生效,数据还是超出定义长度。
建议对报错的表目的端扩大下长度再次迁移,老版本 UTF8字符集 length_in_char设置为1,相当于精度扩大4倍数,比如varchar(10),实际上是varchar(40),UTF8一个中文占3个字节,所以理论上varchar(10)可以存40/3 13个汉字,迁移时候,强制转为字符模式,就是varchar(10 char)只能存10个汉字,所以理论上长度仍然会不够;
迁移时候界面选择字符串x2
在数据类型映射界面,确认 “源精度” 字段是否正确。若源数据实际长度大于设置的精度,即便配置 “强制为字符存储” 也可能报错。若发现源精度设置有误,根据实际数据长度合理调整。
到新版本数据库中,查看目的表对应字段定义。确保目的表字段的数据类型、长度设置与迁移配置一致。若目的表字段长度设置小于要迁移的数据长度,会导致超出定义长度报错。