【发布时间】:2017-01-14 13:53:54
【问题描述】:
我有这张桌子:
CREATE TABLE comments(
comment_id int(11) NOT NULL auto_increment,
user_id int(11) NOT NULL,
product_id int(11) NOT NULL,
comment_text varchar(1000) COLLATE utf8_czech_ci NOT NULL,
uploaded datetime NOT NULL,
primary key(comment_id),
constraint fk_user_comments foreign key(user_id) references user(user_id) ON UPDATE CASCADE ON DELETE CASCADE,
constraint fk_product_comments foreign key(product_id) references product(product_id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
我正在尝试将数据插入此表中。
INSERT INTO comments(user_id,product_id,comment_text,uploaded) VALUES(1,'brbr',1,Now());
但由于某种原因,我不断收到此错误:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`project`.`comments`, CONSTRAINT `fk_product_comments` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ON UPDATE CASCADE)
存在 id 为 1 的用户,存在 id 为 1 的产品,所以现在我不知道是什么导致了问题。
【问题讨论】:
-
您没有为主键 comment_id 插入值。那是错的。先解决这个问题。您还可以分享产品和用户表中的结构和数据吗?并且 product_id 声明为 int 您提供了一个字符串值,这是错误的。这就是您的查询失败的原因。
-
天哪……我。现在我觉得自己很愚蠢:D。谢谢。
-
@Venkat:“您没有为主键 comment_id 插入值。这是错误的” 嗯?这是一个
auto_increment字段。重点不是自己设置。 -
糟糕,感谢您指出这一点。同意。
标签: mysql sql foreign-keys sql-insert