ホームページ >データベース >mysql チュートリアル >MySQL が「子行を追加または更新できません: 外部キー制約が失敗しました」(エラー 1452) をスローするのはなぜですか?

MySQL が「子行を追加または更新できません: 外部キー制約が失敗しました」(エラー 1452) をスローするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 00:01:11152ブラウズ

Why Does MySQL Throw

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 サイトの他の関連記事を参照してください。

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