2011-03-12 7 views
1

私はEnumデータ型を別のテーブルの外部キーとして参照される主キーとして使用しています。この列挙型の値に余分な要素を追加する必要がある場合は、両方の表にMySQLのENUMタイプに開始から2バイトを使用させる

ALTER TABLE <table> MODIFY <colName> ENUM(<OLD VALUES>, NEW VAL); 

を使用します。それはうまく動作します。

私は< 255値以上になってしまった1つのあいまいな例がありました。その場合、ENUMは1バイトストレージから2バイトストレージに切り替える必要があります。それは失敗する時です。 './TXCAD/EN_TABLE」(errnoに:150)に' ./TXCAD/#sql-5912_86' の名前変更のエラー:私

ERROR 1025(HY000)を与える

私はいくつかの研究をしましたメインテーブルの1バイトから2バイトへの変換が、外部キーのデータ型の不一致を引き起こすことがわかりました。

テーブルの作成中にENUM()が255未満の値を持っていても、MySqlに開始から2バイトを強制的に使用させる方法はありますか?(これは256+の値から始まる場合には起こりません。 ?

MySQLを使用して - 5.1 InnoDBテーブル

だけ知っているので

答えて

1

、私はかなりために、この上で検索しました。ドキュメントから、テーブル作成時に2バイトの列挙型を取得する唯一の方法は、あなたが言及した方法です。すなわち、列挙型リストに255以上の項目を指定することです。私はそれを可能にする構文を作成するテーブルの別の部分が表示されません。あなたの唯一の他の希望は、異なるデフォルトを有効にする設定ファイルパラメータがあることです。

サーバーシステム変数のリストは存在しますが、クイック検索を行い、列挙型フィールドサイズの既定の動作を変更する可能性のある参照が表示されませんでした。 http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html (ノートは、このページが非常に大きく、一瞬私のブラウザをハング。)

はちょうどあなたがだけではなく、コオロギを聞くことで、他の誰かが質問を見て、さらに調査することを決めたことを知りたいと思いました...

+0

ありがとうございます。私はあまりにもページをチェックした。 doesntはそのサイズを強制する簡単な方法であるように思われる。これは本当に強力なデータ型ですが、MySqlで十分に活用されていません。 – Jai

+0

これのための方法を見つけることができませんでした。 Dontはこれを通常の解決策と信じています。 – Jai

関連する問題