执行数据更新时报错提醒:Data truncated for column ‘字段名‘ at row 1。
首先看到的是否该字段为非空对象,经过认真比对后没发现问题,继续排查,发现更新的内容是通过sql批量更新,而非程序输入,那么这个时候就应该能猜到可能是字段超过长度,再次查看更新的字段内容,发现数值大于字段限定长度。
网上查了一下,发现大部分分享都是检查是否字段为空,忽略了字段长度问题。这种问题会出现在批量操作时,因为错误数据出现,导致sql执行截断,提示错误为truncated,而不是提示to long或Incorrect date value: ‘XX‘ for column ‘xx‘ at row 1 Query,这样就不太容易准确发现问题。
现在将了解的各种情况总结如下:
情况一:(not null)
原因:a、修改表结构字段为not null,更新或插入的字段长度存在 null 值。
解决办法:更新或插入的数据去掉或修改带有null的值 或 修改表结构去掉或修改not null限;
情况二:(字段长度)
原因:b、修改表结构字段长度小于更新或插入的字段长度。
解决办法:更新或插入的数据为合适长度值 或 修改表结构调整合适的字段长度;
情况三:(字段类型)
原因:c、字段类型不匹配。如字段类型设置枚举类型,Boolean等,新插入或更新的数据非此类型的。
解决办法:修改更新数据符合字段要求;
总结:
一般问题都是出现在:字段类型,字段长度,字段是否可空