PHP / MySQL: «Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено» - PullRequest
2 голосов
/ 23 февраля 2012

Я относительно новичок в (My) SQL и уже два дня бью свою клавиатуру головой.Я просто не могу решить проблему.У меня есть база данных, которая содержит три таблицы: элементы , координаты и цена .Элементы таблицы имеют необязательное отношение 1-ко-многим с ценой и обязательное отношение 1: 1 с координатами.Всякий раз, когда я пытаюсь обновить все три из них, я получаю эту ошибку:

«Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется

(`items`.`items`, CONSTRAINT `fk_items_coords1` FOREIGN KEY (`coords_idCoords`) REFERENCES `coords` (`idCoords`) ON DELETE NO ACTION ON UPDATE NO ACTION)

»

Я перепробовал все, что мог найти и придумать: изменить порядок вставки, изменить сами отношения, сначала добавить вручную (я знаю, что это необходимо) и т. Д. И т. Д. Я также попытался изменить их оба на обязательные длямгновение, как я заметил, эта проблема не возникает при вставке внешнего ключа цены.Однако я обнаружил, что он просто вставляет нулевое значение.Возможно, это действительно простое решение, но я просто не могу обойти его.

Вот мой PHP , а - мой SQL .

Я хорошо знаю, что PHP небрежный (особенно два отдельных запроса), но я доберусь до этого, как только исправлю это.Я надеюсь, что предоставил вам достаточно информации.Если есть что-то еще, что вам нужно, дайте мне знать.Заранее спасибо.

1 Ответ

0 голосов
/ 23 февраля 2012

Ну, проблема довольно проста.Вы пытаетесь вставить некоторые coord в items, где нет координат с таким идентификатором.

Дважды проверьте данные, которые вы пытаетесь вставить ...

...