MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails

Ошибка MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails может возникать при попытке вставить в ассоциированную таблицу запись без Id, на который ссылается внешний ключ второй таблицы.

Пример:

Первая таблица goods с описанием товара:

У нее есть id и она имеет отношение один-к-одному с таблицей quantities.

Таблица Quantities:

Вторая таблица quantities имеет ссылку на сущность GoodsEntity (таблица goods). В таблице quantities есть внешний ключ (foreign key) goods_id, который указывает на id в таблице goods.

Как возникает ошибка:

Создаем запись для первой таблицы. Создаем запись, которая указывается в первой таблице по внешнему ключу, которая должна быть записана во вторую таблицу с id из первой. При попытке записи сразу в две таблицы получим ошибку, которая говорит, что ключа (id) у первой таблицы goods  еще нет, а значит нам нечего записывать в foreign key (goods_id) во второй таблице quantities.

Решение:

Прописываем создание id в первой сущности.

Share Button
4
10728 Total Views 3 Views Today

Добавить комментарий