参照元に存在しない値で外部キーを貼ろうとしてエラー

既にDBに値が入っている状態で外部キー制約をつけようとしたらエラーになった

Cannot add or update a child row: a foreign key constraint fails 

→外部キーの値が参照元に存在しない状態だとそうなる

例)hogeテーブルに0がない状態で、既に参照先で0が設定されている

mysql> select * from hoge;
+--+
|id|
+--+
| 1|
| 2|
| 3|
+--+

参照元に無い値が設定されている為、hoge_idは外部キーにできない

mysql> select * from fuga;
+--+-------+
|id|hoge_id|
+--+-------+
| 1|      0|
| 2|      0|
| 3|      0|
+--+-------+

データを参照元にあるものに変更したり、レコードを削除するなりで対処。

mysql> delete from fuga;

消してからならOK

mysql> ALTER TABLE fuga ADD CONSTRAINT fuga_hoge_id_hoge_id FOREIGN KEY (hoge_id) REFERENCES hoge(id) ON DELETE CASCADE