我将外键添加到我的应用中。我有comments
,games
,films
和books
的表格。当我为游戏创建评论时,我将字段game_id
设置为当前游戏的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)
等),但错误仍然存在。有人可以帮帮我吗?
答案 0 :(得分:2)
错误消息包含此问题所需的所有信息:
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
以解决此问题。