ERROR 1452 (23000): Cannot add or update a child row: …
【環境】
MySQL:5.5.27
MySQL:5.5.27
状況
とあるテーブルに CSV データを入れ込もうとして下記エラーが出た。
エラー
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`database`.`table_b`, CONSTRAINT `[constraint_name]` FOREIGN KEY (`table_a_id`) REFERENCES `table_a` (`id`) ON DELETE CASCADE)
このエラーは外部キー制約に違反したデータを保持した状態で
当該テーブルを更新しようとすると出るとのこと。
原因
親テーブル(table_a)の取り込み時に、2行欠落していた。
解決
親テーブル(table_a)を取り込み直して解決。
かなすぃ。 XO
調査過程
あ~、またやってしまったと思い、
あれこれデータを調べてみたけど、不整合を見つけることができなかった。
検索
親テーブル(table_a)の ID は、1~365。
子テーブル(table_b)の table_a_id カラムに入っている値を
phpMyAdmin で検索して、1 より小さいもの、365 より大きいものを見てみたけど
検索結果は 0。
データ件数
ふと気になって、table_a のデータ件数を見てみたら
なんと! 364件。
あり? と思って、データを追ってみたら
ID:358 がない。。。
ログ
改めて、LAOD DATA LOCAL INFILE のログを見てみたら、あらら。。。
- Query OK, 363 rows affected (0.05 sec)
- Records: 365 Deleted: 0 Skipped: 2 Warnings: 0
じぇんじぇん見てなかったじぇ。。。
これを確認していれば、無駄な時間を取られずにすんだのに~。
Skipped: 2 なのに、364件あったのは。。。
い、今は気が付かなかったことにしましょ。。。