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

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のデータも削除されるようになります。

AWS構築サービスの全てをまとめた資料を公開中

ハックノート(TOWN株式会社)では、AWSの導入や構築支援を行っています。AWS導入メニューやサービス詳細、構成例や費用を掲載した資料をダウンロードできます。

AWSの新規導入やAWSへの移行を検討の際は、ぜひご参考ください。


APNコンサルティングパートナー

TOWN株式会社はAmazon公認コンサルティングパートナーです。