Yii 1.1.15中的外键错误

时间:2015-01-10 11:06:45

标签: php mysql yii foreign-keys database-migration

我将外键添加到我的应用中。我有commentsgamesfilmsbooks的表格。当我为游戏创建评论时,我将字段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)等),但错误仍然存​​在。有人可以帮帮我吗?

1 个答案:

答案 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以解决此问题。