1

別のテーブルで外部キーとして参照される主キーとして列挙型データ型を使用しています。この列挙値に要素を追加する必要がある場合は、

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テーブル

4

1 に答える 1

1

ご存知のように、私はこれをかなり検索しました。ドキュメントから、テーブルの作成時に2バイトの列挙型を取得する唯一の方法はあなたが言及した方法であるように見えます...つまり、列挙型リストに255を超えるアイテムを指定します。それを可能にする構文を作成するテーブルの別の部分が表示されません。他の唯一の希望は、別のデフォルトを有効にする構成ファイルパラメーターがあることです。

サーバーシステム変数のリストは存在しますが、クイック検索を行ったところ、列挙型フィールドサイズのデフォルトの動作を変更する可能性のあるものへの参照が見つかりませんでした。 http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html (このページは非常に大きく、ブラウザが一時的にハングすることに注意してください。)

クリケットを聞くだけでなく、他の誰かが質問を見てさらに調査することにしたことを知りたいと思っただけです...

于 2011-03-12T03:44:22.163 に答える