
目录一、环境信息二、问题描述三、问题截图四、问题分析1、可能原因分析2、源端字段数据查看3、DUMP字段五、解决方法一、环境信息名称值CPUx86操作系统KylinV10DM版本DM Database Server 64 V8二、问题描述测试环境DM8到DM9迁移DTS工具迁移时提示列【XXX】长度超出定义。三、问题截图四、问题分析1、可能原因分析序号问题原因解决方法1源端和目的端数据库字符集不一致例如一个GBK、一个UTF-8且数据中包含中文GBK中一个中文占两个字节UTF-8中一个中文占三到四个字节。DTS迁移时选择配置类型映射关系将VARCHAR类型长度适当扩倍。2两边表结构有差异尤其关注报错字段类型长度差异。对齐后正常迁移。但这次的情况是两边的字符集、表结构都相同所以才有记录此次问题意义。2、源端字段数据查看报错字段INST_NAME类型定义长度64LENGTHB计算字节长度为64正好占满倒数第一个字符是问好第二个字符是6。3、DUMP字段dump不加第二参数默认以十进制显示字符6对应的十进制为54可以查一下ASCII表。ASCII 标准范围是 0–127其中 0–31 和 127 是不可见控制字符32–126 是可打印字符。超过 127 的字节值不属于标准 ASCII所以198对应的字符显示为问号是正常的。也就是说DTS在迁移一些特殊字符时会做额外处理例如加转义符之类的导致超过类型最大长度定义。五、解决方法选择策略。勾选按字节流迁移CHAR和VARCHAR数据数据正常迁移无报错。