(1)原因分析
DTS结构转换过程是根据字段定义实现,实际字段长度不影响DTS结构转换,由于ADB不支持BIGINT UNSIGNED类型,所以按照ADB字段转换规则,MySQL同步到ADB3.0时unsigned bigint一定会转成decimal(20,0)。如果不进行转化的话,由于BIGINT存储长度为-9223372036854775808 - 9223372036854775807 ,BIGINT UNSIGNED 存储长度为0 - 18446744073709551615(大于BIGINT),一旦BIGINT UNSIGNED数据超出了长度会造成精度损失(源端和目标端数据精度不一致),即数据在同步后是会产生不一致结果。
(2)解决方案
这是ADB数据迁移类型的规定,暂无其他选择。MySQL和ADB支持的数据类型文档见下,可以在数据迁移前及时把控和处理数据类型转换关系。