検索
ホームページデータベースmysql チュートリアル一意のキーを作成するときに MySQL エラー #1071: 最大キー長を超えましたが発生するのはなぜですか?

Why am I getting MySQL Error #1071: Maximum Key Length Exceeded when creating a unique key?

MySQL エラー #1071: 最大キー長を超えました

VARCHAR データ型の列を含む MySQL テーブルに一意のキー制約を追加すると、次のエラーが発生する場合があります:

#1071 - Specified key was too long; max key length is 767 bytes

このエラーは、VARCHAR 列を合わせた長さが以下の場合でも発生します。キーの最大長。MySQL バージョン 5.6 以前では 767 バイトです。

エラーの原因

MySQL バージョン 5.6 以前の InnoDB テーブルのプレフィックス制限は 767 バイトです。これは、キー列のプレフィックスを組み合わせた長さがこの制限を超えることができないことを意味します。 MyISAM テーブルの場合、キーの最大長は 1,000 バイトです。

この例では、列 column1 と column2 のデータ型はそれぞれ VARCHAR(20) と VARCHAR(500) です。これは、合計の長さが 522 バイトになることを意味し、767 バイト制限未満に十分なマージンが残ることになります。ただし、エラー メッセージは、これが当てはまらないことを示しています。

説明

エラーの理由は、MySQL が VARCHAR カラムに可変長のマルチバイト エンコーディングを使用しているためです。これは、VARCHAR 列の各文字をさまざまなバイト数で表現できることを意味します。たとえば、VARCHAR(20) 列は最大 20 文字を保持できますが、UTF-8mb4 などのワイド文字形式でエンコードされている場合、各文字は最大 3 バイトを占める可能性があります。 、キーの実際の長さは、各列に格納できる文字列の最大長によって決まります。この場合、column1とcolumn2の文字列の最大長は、それぞれ20

3バイト = 60バイト、500

3バイト = 1500バイトです。これにより、合計 60 1500 = 1560 バイトとなり、最大キー長の 767 バイトを超えます。解決策

この問題を解決するには、次の解決策を検討できます。

    VARCHAR 列の最大長を減らします。
  • たとえば、column1 のデータ型を VARCHAR(15) に変更できます。
  • 短いキー プレフィックスを使用します。
  • column2 フィールド全体にインデックスを作成する代わりに、column2 フィールドのサブセットのみを使用できます。 column2(200) など。
  • より長いキー長をサポートする別のテーブル エンジンを使用してください。
  • MyISAM テーブルの最大キー長は 1,000 バイトで、要件には十分な場合があります。
  • MySQL バージョン 5.7 以降にアップグレードしてください。
  • MySQL 5.7 以降のバージョンの最大キー長は3072 バイト。柔軟性がさらに高まります。

以上が一意のキーを作成するときに MySQL エラー #1071: 最大キー長を超えましたが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?Mar 19, 2025 pm 03:51 PM

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?Mar 18, 2025 pm 12:01 PM

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

MySQLの大きなデータセットをどのように処理しますか?MySQLの大きなデータセットをどのように処理しますか?Mar 21, 2025 pm 12:15 PM

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?Mar 21, 2025 pm 06:28 PM

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか?ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか?Mar 19, 2025 pm 03:52 PM

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

外国の鍵を使用して関係をどのように表現しますか?外国の鍵を使用して関係をどのように表現しますか?Mar 19, 2025 pm 03:48 PM

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?Mar 18, 2025 pm 12:00 PM

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)

JSON列にインデックスを作成するにはどうすればよいですか?JSON列にインデックスを作成するにはどうすればよいですか?Mar 21, 2025 pm 12:13 PM

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。