четверг, 26 мая 2011 г.

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

Инструментарий: MySQL Server, Navicat
Описание: Нужно было связать две таблицы (Если ограничение установлено, то такая же ошибка возникает при редактировании/вводе новых данных). При создании Foreign Keys и установке свойств On Delete, On Update = CASCADE, получил в ответ следующее сообщение:
ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (`xxx`, CONSTRAINT `fk_xxx` FOREIGN KEY (`xxx`) REFERENCES `xxx` (`xxx`))

Решение: После анализа оказалось что у меня данные с дочерней таблицы ссылаются на несуществующие данные с главной таблицы. После редактирования данных все заработало. Пример:
Table1 (родительсткая)
id Name
1 тест 1
2 тест 2

Table2 (дочерняя)
id idParent Name
1  5              тест 5.1
2 1               тест 1.1
В Table2 первая запись ссылается на записи которых нет в Table1.

Комментариев нет: