我不确定是否无法更改ENUM()列表,所以我进行了测试。在MySQL v5.1.58中,我测试了一个InnoDB表,其中包含一个名为ENUM('yes','no')类型的“ bool”字段。
然后我执行了...
ALTER TABLE `test`
CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' )
CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
...而且有效。
我做错了什么吗?它取决于数据库引擎吗?为什么每个人都说不可能更改ENUM()列表?例如。此处http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
3
您提到的文章并没有说不可能。它说更改成员列表非常昂贵,因为引擎会进行全表扫描。
—
a1ex07 2012年
我在十月份提到了您有关ENUM的链接(dba.stackexchange.com/a/6966/877)。此外,我在MyISAM(dba.stackexchange.com/a/6548/877)中发布了有关如何执行此操作的参考。在这种情况下,InnoDB是不可能的。
—
RolandoMySQLDBA 2012年