MySQLで外部キーを貼り直すときにエラーが出た場合

@iwasaki 2,515views 更新:2015年6月9日

MySQLで外部キーを貼り直すときに以下の様なエラーが出ることがあります。

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails

これは外部キーのルールから外れる不整合なデータが既にあるため、このデータを一旦削除する必要があります。

hogeに紐づくhoge_mapでhoge上からは削除されているがhoge_mapからは削除されてないデータが残っていた場合、

DELETE FROM hoge_map WHERE hoge_id NOT IN( SELECT hoge_id FROM hoge );

などのようにして不整合のあるデータを削除した上で

ALTER TABLE hoge_map ADD FOREIGN KEY (`hoge_id`) REFERENCES `hoge` (`hoge_id`) ON DELETE CASCADE;

と外部キーを設定します。

この外部キーを設定することで hoge上からデータを削除するとそれに紐づくhoge_mapのデータも削除されるようになります。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません