ホームページ >データベース >mysql チュートリアル >MySQL がエラー #1071:「指定されたキーが長すぎます」をスローするのはなぜですか?
MySQL エラー #1071: キーの長さの制約の詳細
2 つの VARCHAR に一意のキー制約を追加して MySQL テーブルを変更しようとしたとき列を作成すると、「#1071 - 指定されたキーが長すぎます; キーの最大長」というやや複雑なエラー メッセージが表示されます。は 767 バイトです。」どちらのカラムのサイズも 767 バイト制限内にあるように見えますが、このエラーを理解するには、MySQL のキーの長さの制約をさらに深く掘り下げる必要があります。
キーの長さの制限の再確認
MySQL バージョン 5.6 以前のキーの最大長は、InnoDB テーブルでは実際に 767 バイトです。 MyISAM テーブルの場合は 1,000 バイト。ただし、MySQL バージョン 5.7 以降では、この制限はさらに大きい 3072 バイトに拡張されました。
VARCHAR ストレージのデコード
一方、VARCHAR データ型は最大値を示唆しています。それぞれの列のストレージが 20 バイトと 500 バイトである場合、この計算には文字エンコーディングは考慮されません。 VARCHAR フィールドが utf8mb4 形式でエンコードされている場合、インデックス プレフィックスの最大長は効果的に 4 分の 1 に減り、その結果、わずか 191 バイト (767 / 4) になります。
回避策の見つけ方
この問題を解決するには、次のいずれかの実装を検討してください。戦略:
以上がMySQL がエラー #1071:「指定されたキーが長すぎます」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。