ホームページ >データベース >mysql チュートリアル >MySQL テーブルの作成時に「書き込めません。テーブル内のキーが重複しています」エラー (エラー 1022) が発生するのはなぜですか?

MySQL テーブルの作成時に「書き込めません。テーブル内のキーが重複しています」エラー (エラー 1022) が発生するのはなぜですか?

DDD
DDDオリジナル
2024-10-28 04:07:20408ブラウズ

Why am I Getting

重複が検出されました: MySQL テーブル作成失敗 (エラー 1022)

MySQL Workbench を使用してテーブルを作成しようとすると、ユーザーは恐ろしい問題に遭遇する可能性があります。エラー 1022: 「書き込めません。テーブル内のキーが重複しています。」この問題は、テーブルの作成に使用される一見単純な SQL ステートメントにもかかわらず発生します。詳しく調べると、問題が明らかになります。

犯人: 同一の外部キー名

エラー メッセージは、ファイル内に同一の名前を持つ複数の外部キーが存在することが原因で発生します。同じデータベースモデル。この概念を理解するには、次の例えを考えてください:


  • ビジネスの世界では、各従業員は 1 つの部門に関連付けられています。
    < ;li>同様に、データベースでは、子テーブルの各行は親テーブルの 1 つの行を参照する必要があります。

  • この参照メカニズムは、ブリッジとして機能する外部キーを通じて確立されます。

この問題は、異なるテーブル内の 2 つの異なる外部キーが親テーブルの同じ列を参照する場合に発生します。従業員が同時に 2 つの部門で働くことができないのと同様に、子テーブルの行に、異なる親テーブルの行を指す複数の外部キーを設定することはできません。

物理的な例

考慮してください。次のデータベース モデル:


  • テーブル「カタログ」には製品のリストが含まれます。
  • gt;
  • テーブル「サプライヤー」には、サプライヤーのリスト。

両方のテーブルに、「Supplier」テーブルを参照する「supplier_id」という名前の外部キーが含まれている場合、MySQL はエラー 1022 を返します。この問題を解決するには、外部キーに一意の名前を割り当てることが重要です。

名前の競合を解決する

エラーを修正するには、次の手順に従います。

  1. SQL ステートメントを開いて、外部キー定義を見つけます。
  2. 重複した外部キ​​ー名を特定します。
  3. 重複した外部キ​​ーの名前を一意の名前に変更します。
  4. 更新された SQL ステートメントを実装してテーブルを作成します。

外部キー内の名前の競合に対処することで、目的のテーブルを正常に作成し、「書き込みできません。テーブル内のキーが重複しています」エラー。

以上がMySQL テーブルの作成時に「書き込めません。テーブル内のキーが重複しています」エラー (エラー 1022) が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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