1452: Cannot add or update a child row: a foreign key constraint fails(子行を追加/更新できない: 外部キー制約違反)
MySQL意味
子行を挿入または更新しているが、その行が指す親キー値が参照先テーブルに存在しないため、外部キー制約が拒否している。
原因
存在しない親キーを参照する INSERT/UPDATE、誤った順序でのデータロード (子が先)、または削除された親行。
対処方法
先に親行を挿入し、次に子行を挿入する。参照値が存在することを確認する: SELECT * FROM parent_table WHERE key_column = value。一括ロードでは親子の順序を守る。SET FOREIGN_KEY_CHECKS=0 は管理されたメンテナンス作業でのみ使い、終了後に 1 に戻す。
同じデータベースの他の項目
- 1114The table is full(テーブルが満杯)
- 1215Cannot add foreign key constraint(外部キー制約を追加できない)
- 1451Cannot delete or update a parent row: a foreign key constraint fails(親行を削除/更新できない: 外部キー制約違反)
- 1366Incorrect string/integer value for column(列に対する文字列/整数値が不正)
- 1044Access denied for user to database(データベースへのアクセス拒否)
- 1264Out of range value for column(列の範囲外の値)
- 1052Column 'x' in field list is ambiguous(フィールドリストの列が曖昧)