MySQL を使用してテーブルを作成しようとすると、エラー 1022: 「書き込めません。キーが重複しています」が発生します。テーブルにあります。」特異な点は、テーブルで 1 つのキーのみが定義されているにもかかわらず、エラーが継続することです。
調査の結果、テーブル定義内の特定のスニペットがエラーをトリガーしているようです:
<code class="sql">CONSTRAINT `error_id` FOREIGN KEY (`error_id` ) REFERENCES `mydb`.`errors` (`error_id` ) ON DELETE NO ACTION ON UPDATE NO ACTION,</code>
同様の外部キー定義が他のテーブルに問題なく存在しますが、問題は 外部キーの名前: error_id.
根本原因:
にあります。この問題は、外部キー名がデータベース モデル全体内の別の外部キー名と同じであることができないために発生します。これは、2 つのテーブルが同じテーブルを参照する場合、各テーブルの外部キーには一意の名前が必要であることを意味します。
解決策:
エラーを解決するには、単に問題の外部キーは別の名前です。たとえば、fk_error_id という名前を付けることができます。これにより、モデル内の他の外部キーと区別され、MySQL がテーブルを正常に作成できるようになります。
以上がキーが 1 つしかないのに、MySQL エラー 1022: 「書き込めません。テーブル内のキーが重複しています。」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。