PR

#1451 – Cannot delete or update a parent row: a foreign key constraint fails の解決法

アイキャッチ画像
#1451 - Cannot delete or update a parent row: a foreign key constraint fails

エラー発生時

phpMyadminでレコードを削除しようとしたとき。

原因

リレーションしている他のテーブルから参照されているレコードを削除しようとしたため。

エラー文を和訳すると、「親の行を削除または更新できません。:外部キー制約の失敗です。」

例えば、下記のようなリレーションしているテーブルがあるとします。

messagesテーブルは【user_id】カラムで、usersテーブルの【id】カラムを参照しています。
そのため、usersテーブルのレコードは、そのレコードを参照しているmessagesテーブルのレコードがある場合、勝手に削除しようとすると今回のエラーが起きます。

解決法

データベースのGUIツールを使っている場合は、まずリレーション先のレコードを削除してから対象のレコードを削除しましょう。

プログラミング言語で実装している場合は、言語によって書き方が異なるので詳しい解説は省きますが、リレーション先のレコードを削除する処理をするコードを先に書けば良いでしょう。

以上、『1451 – Cannot delete or update a parent row: a foreign key constraint fails の解決法』でした。