ホームページ > データベース > mysql チュートリアル > MySQL での「Foreign Key Constraint Fails」エラーを解決するにはどうすればよいですか?

MySQL での「Foreign Key Constraint Fails」エラーを解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-28 09:21:11
オリジナル
314 人が閲覧しました

How to Resolve

MySQL の「外部キー制約が失敗する」エラーへの対処

別のテーブルを参照する既存のテーブルに外部キーを追加する場合、参照される行が親テーブルに存在します。そうしないと、「子行を追加または更新できません: 外部キー制約が失敗します」エラーが発生する可能性があります。

指定されたケースでは、参照するsourcecodes_tagsテーブルに外部キー(sourcecode_id)を追加しようとしています。ソースコードテーブル。ただし、SHOW CREATE TABLE クエリによると、sourcecodes テーブルを参照するsourcecodes_tags テーブルに外部キーが定義されていないようです。

エラー メッセージは、外部キー違反があることを示しています。つまり、sourcecode_id の一部がsourcecodes_tags テーブルの値は、sourcecodes テーブルには存在しません。この問題を解決するには、それらの孤立したレコードを特定して削除する必要があります。

孤立したレコードの特定

sourcecode テーブルに存在しない sourcecode_id 値を見つけるには、次のクエリを使用できます:

SELECT DISTINCT sourcecode_id 
FROM sourcecodes_tags tags 
LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
WHERE sc.id IS NULL;
ログイン後にコピー

このクエリは、次の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 sourcecodes_tags 
ADD FOREIGN KEY (sourcecode_id) 
REFERENCES sourcecodes (id) 
ON DELETE CASCADE ON UPDATE CASCADE;
ログイン後にコピー

以上がMySQL での「Foreign Key Constraint Fails」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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