ERROR 1452 (23000): Cannot add or update a child row: …

Posted by muchag | MySQL | 2016-01-19 (火) 13:58:54

【環境】
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 のログを見てみたら、あらら。。。

  1. Query OK, 363 rows affected (0.05 sec)
  2. Records: 365  Deleted: 0  Skipped: 2  Warnings: 0

じぇんじぇん見てなかったじぇ。。。
これを確認していれば、無駄な時間を取られずにすんだのに~。

Skipped: 2 なのに、364件あったのは。。。
い、今は気が付かなかったことにしましょ。。。

MySQL | 2016-01-19 (火) 13:58:54 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment