ENUM()リストの変更が不可能かどうか確信が持てなかったので、テストを行いました。MySQL v5.1.58では、タイプENUM( 'yes'、 'no')の 'bool'という1つのフィールドを含むテストInnoDBテーブルを作成しました。
それから私は実行しました...
ALTER TABLE `test`
CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' )
CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
...そしてそれは働いた。
私は何か間違ったことをしましたか?dbエンジンに依存していますか?誰もがENUM()リストの変更は不可能だと言うのはなぜですか?例えば。こちらhttp://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
3
あなたが言及した記事は不可能だとは言っていません。エンジンがテーブル全体をスキャンするため、メンバーリストの変更には費用がかかると言われています。
—
a1ex07
10月にENUMについてのリンク(dba.stackexchange.com/a/6966/877)について言及しました。さらに、これを行う方法に関するリファレンスをMyISAM(dba.stackexchange.com/a/6548/877)に投稿しました。この場合、InnoDBは問題外です。
—
-RolandoMySQLDBA