別のテーブルで外部キーとして参照される主キーとして列挙型データ型を使用しています。この列挙値に要素を追加する必要がある場合は、
ALTER TABLE <table> MODIFY <colName> ENUM(<OLD VALUES>, NEW VAL);
両方のテーブルで。正常に動作します。
あいまいな例が1つあり、255未満の値からそれ以上の値になってしまいました。その場合、ENUMは1バイトのストレージから2バイトのストレージに切り替える必要があります。それは失敗するときです。私にくれ
エラー1025(HY000):'./TXCAD/#sql-5912_86'の名前を'./TXCAD/EN_TABLE'に変更する際のエラー(errno:150)
いくつかの調査を行ったところ、メインテーブルの1バイトから2バイトへのこの変換により、外部キーのデータ型が一致しないことがわかりました。(256以上の値から始めた場合、これはまったく発生しません。確認しました)
テーブルの作成中にENUM()の値が255未満であっても、MySqlに最初から2バイトを使用させる方法はありますか?
MySqlの使用-5.1InnoDBテーブル