Data truncated for column MYSQL修改表报错

报错内容

修改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. 追加枚举选项 ‘1’,‘2’,‘3’
  2. 修改表数据 a=1,b=2,c=3
  3. 修改枚举选项 删除abc,保留123

版权声明:本文为lq545209147原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。