Я добавляю иностранные ключи в свое приложение. Там у меня есть таблицы для comments
, games
, films
а также books
, Когда я создаю комментарий для игр, я устанавливаю поле game_id
на идентификатор текущей игры, но появляется эта ошибка:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`chooseone`.`tbl_comments`, CONSTRAINT `FK_books_comments` FOREIGN KEY (`book_id`) REFERENCES `tbl_books` (`id`) ON DELETE CASCADE ON UPDATE CASCADE). The SQL statement executed was: INSERT INTO `tbl_comments` (`content`, `game_id`, `author_id`, `created`, `updated`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4)
Я уже нахожу похожие посты и пытаюсь внести некоторые изменения (например, обмен INT(10)
в таблице comments
в INT(11)
и т.д.), но ошибка все еще здесь. Кто-нибудь может мне помочь?
Сообщение об ошибке содержит всю информацию, необходимую для этой проблемы:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
Вышеуказанное указывает на то, что проблема связана с дочерней строкой (что обычно происходит при вставке).
CONSTRAINT `FK_books_comments` FOREIGN KEY (`book_id`)
REFERENCES `tbl_books` (`id`) ON DELETE CASCADE ON UPDATE CASCADE).
Выполненный оператор SQL был:
INSERT INTO `tbl_comments` (`content`, `game_id`, `author_id`, `created`, `updated`)
VALUES (:yp0, :yp1, :yp2, :yp3, :yp4)
Посмотрите на ограничение. Вы ДОЛЖНЫ иметь book_id
в любых строках tbl_comments
стол, и это book_id
ДОЛЖЕН соответствовать id
записи в tbl_books
Таблица. Вы однако не включаете book_id
в заявлении вставки.
Укажите book_id
решить эту проблему.
Других решений пока нет …