简单记录关于DBbridge迁移bigint类型数据变为负数的问题

发布时间 2023-08-24 15:05:31作者: zhealks

在DBbridge中测试迁移tdsqlpcloud_monitor库时发现部分表迁移失败:

根据报错 Data truncation: Out of range value for column 'checksum' at row 1,手动在目标库中drop proxy_classes_analysis表,然后用DBbridge的手动补正功能去掉 checksum 的 unsigned 限制后重新建表:

建表完成后重新迁移,迁移完成后对比id为3892的记录迁移前后 checksum 的变化:

 

可以发现源端checksum:9638865235174554611迁移后变为checksum:-8807878838534997005,盲猜是因为数据类型超出范围导致变为负数。写一段JAVA程序验证一下:

果然是因为将bigint类型的数据赋值给了long类型,导致了数据溢出,建议DBbridge后期能修复一下这个问题。