ホームページ >データベース >mysql チュートリアル >MySQL が「子行を追加または更新できません: 外部キー制約が失敗しました」(エラー 1452) をスローするのはなぜですか?
MySQL 外部キー制約の問題: 子行を追加または更新できない
MySQL テーブルで外部キー制約を確立しようとすると、エラー 1452:「子行を追加または更新できません: 外部キー制約が失敗しました。」が発生する場合があります。この問題は、あるテーブルの子行が、別のテーブルに存在しない親行を参照している場合に発生します。
提供されたシナリオでは、sourcecodes テーブルを参照するsourcecodes_tags テーブルに外部キーを追加しようとしています。ただし、エラー メッセージは、sourcecodes_tags テーブルに存在しない行を参照する孤立したレコードがsourcecodes_tags テーブルに存在することを示唆しています。
この問題を解決するには、まず孤立したレコードを特定する必要があります。次のクエリを使用してこれらのレコードを取得できます:
SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL;
孤立したレコードを特定したら、sourcecodes_tags テーブルから削除できます。これにより、外部キー制約を正常に追加できるようになります。
外部キー制約を適用して、データベース テーブルの参照整合性を確保することが重要です。これらの制約により、データの不整合が防止され、テーブル間の関係が維持されます。孤立したレコードに対処することで、エラー 1452 を解決し、データベース テーブル間の適切な関係を確立できます。
以上がMySQL が「子行を追加または更新できません: 外部キー制約が失敗しました」(エラー 1452) をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。