2010-11-29 10 views

答えて

6

制限はリテラル文字列の長さではなく、テーブル定義にあります。

MySQL documentation

各テーブルは、テーブル定義が含まれているの.frmファイルを持っていると述べています。サーバーは、次の式を使用して、ファイルに格納されているテーブル情報の一部を上限64KBと照合します。

この後、表定義のおおよそのサイズを表すアドホック式が続きます。

2つのフィールドを持つテーブルでは、すでに63136文字までの列挙があり、.frmは71775バイト(70KBよりやや大きい)だったので、限界は近似値です。その時点で、MySQLは#1117 - Too many columnsを訴えていましたが、これは誤解を招くものではありません。

注目すべきである/奇妙なことに注目すると、列挙型の文字セットは最大長を変更します。 - 通常の文字を使用していても、それぞれ1バイトしか必要ありません。

3

ENUM列は、最大65,535個の異なる要素を持つことができます。実際の制限は3000未満です。テーブルは、グループと見なされるENUMおよびSET列の中で、255個を超えるユニークな要素リスト定義を持つことはできません。

関連する問題