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

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

Susan Sarandon
リリース: 2024-12-23 11:17:14
オリジナル
731 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート