MySQL キーの長さの制限とその修正
2 つの VARCHAR カラムに一意のインデックスを作成しようとすると、エラー「#」が発生する場合があります1071 - 指定されたキーが長すぎます。最大キー長は 767 バイトです。」このエラーは、MySQL のキーの長さの制限に起因します。
キーの長さの制限について
MySQL バージョン 5.6 以前では、キーの最大長は 767 です。 InnoDB テーブルのバイト。この制限は、一意のキー内のすべてのインデックス付きフィールドの組み合わせに適用されます。 MyISAM テーブルの場合、この制限は 1,000 バイトです。
UTF-8 文字エンコーディング係数
UTF-8 文字エンコーディング (utf8mb4) を使用する場合は、次の点に注意することが重要です。 1 つの文字を表すのに最大 4 バイトを使用します。その結果、utf8mb4 でエンコードされたフィールドでは、インデックス プレフィックスの最大長 767 バイトが実質的に 191 文字に削減されます。
考えられる解決策
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
MySQL バージョン 5.7 以降では、最大キー長が 3072 バイトに増加され、大きなキーを処理する際の柔軟性が向上しました。ただし、キーの長さのエラーを避けるために、文字エンコード要素とデータ モデルの最適化を考慮することが依然として重要です。
以上がMySQL の一意のインデックスが長すぎるのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。