报错内容
修改enum(枚举)类型字段的选项时报错
#ddl
`col_name` enum('3','2','1') NOT NULL COLLATE utf8mb4_bin DEFAULT '1'
#报错类容如下
Data truncated for column 'col_name' at row 1
经过排查,并非字面意思,数据库列长度也是足够的.该字段类型是 enum (枚举)
问题分析
/*
由于该字段以前的值是 'a','b','c' 而且是非空的
那么现在要删除原有 'a','b','c' 取而代之的是 '1','2','3'.
因此导致原有数据中的 'a','b','c' 无法存放在枚举上从而产生报错
所以我们应该先追加枚举选项 'a','b','c',再修改表数据,最后再删除不要的选项
*/
解决方案
- 追加枚举选项 ‘1’,‘2’,‘3’
- 修改表数据 a=1,b=2,c=3
- 修改枚举选项 删除abc,保留123