書き込めません。テーブルの作成中にキーが重複
主キー エントリが重複しているため、新しいテーブルを作成しようとするとエラー 1022 が発生します。クエリを確認した後でも、重複のソースを特定するのが難しい場合があります。さらに調査してみましょう。
指定したクエリには、「userId」列の外部キーとして「iduser」という名前の制約が含まれています。さらに、「circleId」列に「idcategory」という名前の制約を指定します。これらの制約名が問題の根本であると思われます。
制約と重複
MySQL の制約は、特定のテーブルだけでなく、データベース全体で一意である必要があります。作成または変更されています。したがって、「iduser」または「idcategory」制約名を使用する他のテーブルまたはインデックスがデータベース内にすでに存在する可能性があります。この競合により、重複キー エラーが発生します。
重複制約の特定
これらの制約が現在使用されている場所を確認するには、次のクエリを実行します。
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
このクエリは、「iduser」および「idcategory」制約が適用されているテーブルとスキーマを表示します。
解決策
エラーを解決するには、重複した制約の名前を変更する必要があります。 「userId」列の外部キー制約には「fk_user」など、現在のテーブルに固有の一意の名前を使用することを検討してください。制約の名前が変更され、クエリが更新されたら、何もしなくてもテーブルを正常に作成できるはずです。重複キーエラー。
以上がテーブルの作成時に MySQL エラー 1022 (重複キー) が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。