ホームページ >データベース >mysql チュートリアル >MySQL エラー 1452: 外部キー制約の失敗を解決する方法?

MySQL エラー 1452: 外部キー制約の失敗を解決する方法?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-23 11:17:14731ブラウズ

How to Resolve MySQL Error 1452: Foreign Key Constraint Fails?

Mysql エラー 1452: 外部キー制約により子行の追加または更新が失敗する

sourcecodes_tags テーブルに外部キーを追加しようとしたときソースコード テーブルを参照すると、エラーが発生します:「Mysql エラー」 1452 - 子行を追加または更新できません: 外部キー制約が失敗します。

問題の理解

このエラーは通常、sourcecode_id 値がsourcecodes_tags に存在することを示します。 table は、sourcecodes テーブルに対応する主キー値 (id) として存在しません。 MySQL は参照整合性を強制し、外部キーが親テーブル内の有効な主キーを参照するようにします。

エラーの解決

このエラーを解決するには、特定し、孤立したsourcecode_id値を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;

このクエリは、sourcecode テーブルに存在しない sourcecode_id 値のリストを返します。識別したら、これらの孤立値は DELETE ステートメントを使用して削除できます:

DELETE FROM sourcecodes_tags WHERE sourcecode_id IN (SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL);

孤立値を削除した後、ALTER TABLE ステートメントを再実行して外部キーを追加します:

ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE;

これにより、エラーなしで外部キー制約が正常に作成されるはずです。

以上がMySQL エラー 1452: 外部キー制約の失敗を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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