ホームページ > データベース > mysql チュートリアル > MySQL エラー #1071: 指定されたキーが長すぎますが発生するのはなぜですか?

MySQL エラー #1071: 指定されたキーが長すぎますが発生するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-28 07:41:42
オリジナル
388 人が閲覧しました

Why Am I Getting MySQL Error #1071: Specified Key Was Too Long?

MySQL エラー #1071: キーの長さの制限について

特定の列 (column1 および column2) を持つテーブルに一意のインデックスを追加しようとしたとき)、ユーザーは次のエラーが発生する可能性があります:

#1071 - Specified key was too long; max key length is 767 bytes
ログイン後にコピー

最初はカラム 1 (20) とカラム 2 (500) を合わせた長さが最大キー長の 767 バイト以内であるように見えますが、実際の説明は MySQL のプレフィックス インデックス作成の制限を理解することにあります。

MySQL 5.7 より前のバージョンでは、InnoDBテーブルのプレフィックス インデックスの制限は 767 バイトでしたが、MyISAM テーブルの制限は 1,000 バイトでした。これは、インデックスで使用される最大バイト数が、インデックスに含まれる列の開始部分に基づいていることを意味します。

指定された例では、column1 と column2 は両方とも VARCHAR(x) 列です。 、可変長文字列を格納します。このエラーは、MySQL が格納されている実際のデータだけでなく、カラム全体の長さをインデックスの一部と見なすために発生します。その結果、列 1 と列 2 の実際のデータが割り当てられた合計長より短い場合でも、インデックス サイズは最大制限を超えます。

このエラーを回避するには、ユーザーにはいくつかのオプションがあります。

  • VARCHAR 列の長さを制限する: VARCHAR の長さの下限を設定すると、インデックス サイズが確実に下限を下回るようになります。最大。
  • 列の一部のみにインデックスを作成します: インデックス定義では、column1(15) や column2(200) など、各列の文字のサブセットのみを指定します。これにより、インデックスの合計サイズが減少し、インデックスを作成できるようになります。
  • データ モデルの見直しを検討してください: キーの長さの制限を超えずにビジネス ルールを実装する別の方法を検討します。これには、データを複数の列に分割するか、追加のテーブルを導入することが含まれる場合があります。

MySQL キーの長さのエラーを回避するには、インデックス サイズに対する列の長さの影響を理解することが重要です。列のサイズとインデックスの定義を慎重に管理することで、ユーザーはデータベースの制限を超えることなくインデックスを正常に実装し、データの整合性を維持できます。

以上がMySQL エラー #1071: 指定されたキーが長すぎますが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート