ホームページ >データベース >mysql チュートリアル >MySQL が BLOB または TEXT カラムで「キー長のないキー指定」エラーをスローするのはなぜですか?

MySQL が BLOB または TEXT カラムで「キー長のないキー指定」エラーをスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-19 23:42:11848ブラウズ

Why Does MySQL Throw a

MySQL の「キー長のないキー仕様」エラーのトラブルシューティング

このエラーは通常、キーの長さを指定せずに主キーまたはインデックス定義で BLOB または TEXT 列が使用されている場合に発生します。

問題を理解する

MySQL のインデックス作成メカニズムには、BLOB 列と TEXT 列が可変長であるため、制限があります。 データベースは長さが定義されていないと一意性を保証できないため、エラーが発生します。 キーの一意性を適切に検証するには、固定長が必要です。

ソリューション

いくつかのアプローチでこれを解決できます:

  • キーから BLOB/TEXT を削除します: 最も簡単な解決策は、多くの場合、キー定義から問題のある列を削除することです。 一意の識別に適した別のフィールドを特定します。
  • 別の主キーを使用する: BLOB 列または TEXT 列の一意性が重要な場合は、別の列を主キーとして選択します。
  • 長さ制限のある VARCHAR を使用する: 列の型を VARCHAR(n) に変更します。ここで、「n」は特定の文字制限を表します (例: VARCHAR(255))。これにより、インデックス作成に適した、最大長が定義された可変長データが提供されます。

重要な考慮事項

  • VARCHARの長さは 256 文字未満にしてください。 この制限を超えると、列が自動的に SMALLTEXT に変換され、キーの長さの問題が再び発生する可能性があります。
  • 詳細については、次のリソースを参照してください:「MySQL エラー 1170 (42000): キーの長さのないキー仕様で使用される BLOB/TEXT 列」

以上がMySQL が BLOB または TEXT カラムで「キー長のないキー指定」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。