1.背景

线上数据导入到本地,报错提示 数据truncated,查询之后发现enum字段有空值

2.排查

2.1 先手动修改值,修改为空,失败

2.2 代码正常crud,修改为空,失败

2.3 对比线上线下数据库sql_mode, 线上不是严格模式,找出问题,非严格模式下可更新为null和空

3.指南

3.1 获取mysql的mode

SELECT @@sql_mode;

3.2 获取非法空值

SELECT

你要查询的enum字段,

你要查询的enum字段 + 0

FROM 你的表

WHERE id = 1;