参照元に存在しない値で外部キーを貼ろうとしてエラー
既に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