Mysql:错误代码:1452。无法添加或更新子行:外键约束失败

标签 mysql sql foreign-keys sql-insert

我有这张表:

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 的产品存在,所以现在我不知道是什么导致了问题。

最佳答案

您的列列表顺序困惑了。 您正在尝试插入一行,其 product_id'brbr'(MySQL 将其视为 0)且注释文本为 1( MySQL 将其转换为 '1')。

重新排序列列表以匹配值(反之亦然)应该可以解决它:

INSERT INTO comments
(user_id, product_id, comment_text, uploaded)                
VALUES (1, 1, 'brbr', NOW());
-- Here ---^

关于Mysql:错误代码:1452。无法添加或更新子行:外键约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41650757/

相关文章:

excel - 如何将Excel表中的数据自动导入到MySQL表中?

php - 如果时间在两个给定时间之内,则返回一个值

mysql - 使用 where 子句聚合 sql

SQL - 检查哪些年份包含数据

android - 在 Android 应用程序中,如何显示与另一个表中的信息关联的表中的信息?

python - 为什么我不能为 python 使用已安装的模块?

mysql - PHP/MySQL 多对多。如何?

JOIN 查询的 Php pdo 结果

MySql 脚本临时将外键约束更改为级联然后返回

postgresql - 如果我想节省空间,是否必须创建代理键?