从mysql列中删除枚举值

mic*_*oon 8 mysql enums alter

我有一个名为enum列的表action.目前允许的值是: act1,act2,act3,act4.我想要act3act4被删除,我的表的当前状态不包含任何行act3act4.

当我尝试使用新的值集修改列时,它会抛出错误 Data Truncated for column action.

请建议如何删除所需的值.

Flo*_*ain 10

使用ALTER TABLE添加枚举值是确定和描述MySQL文档.

但是,要删除枚举值,更好的选择是创建一个新列来执行更改.

ALTER TABLE your_table ADD new_action_column ENUM('act1', 'act2') ... ;
UPDATE your_table SET new_action_column = action;
ALTER TABLE your_table DROP action;
ALTER TABLE your_table CHANGE new_action_column action ENUM('act1', 'act2') ... ;
Run Code Online (Sandbox Code Playgroud)

编辑

顺便说说.使用ENUM不是最好的主意,你应该使用INT.

MySQL的ENUM数据类型是邪恶的8个原因

我建议你使用像这样的映射

+------+-----+
| ENUM | INT |
+======+=====+
| act1 |  0  |
+------+-----+
| act2 |  1  |
+------+-----+
Run Code Online (Sandbox Code Playgroud)