错误SQL:无法添加或更新子行:外键约束失败

时间:2014-09-24 15:56:47

标签: mysql sql foreign-keys

我在数据库中创建了两个表

CREATE TABLE ratables (
            id int(11) NOT NULL auto_increment,
            ratableKey varchar(50) NOT NULL,
            created_at timestamp NOT NULL default CURRENT_TIMESTAMP,
        ) AUTO_INCREMENT=1 ;

CREATE TABLE ratings (
            id int(11) NOT NULL auto_increment,
            ratable_id int(11) NOT NULL,
            ip_address varchar(50) NOT NULL,
            rating int(11) NOT NULL,
            timestamp timestamp NOT NULL default CURRENT_TIMESTAMP,
            PRIMARY KEY (id), 
            CONSTRAINT rabid_ratings_fk FOREIGN KEY (ratable_id) REFERENCES
            ratables(id)
        ) AUTO_INCREMENT=1 ;

当我尝试插入

INSERT INTO ratings(ratable_id, ip_address, rating) VALUES ('9', 'ip_adresse', 'rating');

它给了我这个错误

Cannot add or update a child row: a foreign key constraint fails (bd_pagespro.ratings, CONSTRAINT rabid_ratings_fk FOREIGN KEY (ratable_id) REFERENCES ratables(id))

请帮助!

2 个答案:

答案 0 :(得分:0)

这意味着您的表格ratable中没有一行ID =' 9'。

由于我不知道您使用的数据库,我无法确定它不仅仅是一个类型问题。 ' 9'可能不是int,因此错误。

答案 1 :(得分:0)

在插入命令之前添加此项来关闭它:

SET foreign_key_checks = 0;

然后在插入后将其设置回来:

SET foreign_key_checks = 1;

请注意并确保您知道自己在做什么。一定要确保以后将适当的数据插入外键。