2016-08-11 77 views
-1

我试图同时向我的数据库中插入两条记录。一个用主键,另一个用外键。不过,我得到以下错误,当我尝试实现这一点:数据库(MySQL)错误

Cannot add or update a child row: a foreign key constraint fails ....(database details). 

我已经使用这个查询来创建外键:

ALTER TABLE `notes` ADD CONSTRAINT `notes_author_fk` 
    FOREIGN KEY (`authorid`) REFERENCES `audiofeed`.`author`(`authorid`) ON DELETE NO ACTION ON UPDATE CASCADE; 

错误的语句点:

$query1 = "INSERT INTO notes(notename,categoryname,file,authorname)"; 
$query1 .= "VALUES ('$Trackname','$category','$name','$author')"; 
+0

您实际上没有发布产生错误的语句。 – sstan

+0

如果在插入/更新/删除过程中发生错误,则表示FK已经生效,您提出的数据更改会违反规则。 FK。 – Drew

+0

如果在尝试使用'ALTER TABLE'时发生错误,这意味着您的数据尚未准备好用于您要强加的规则 – Drew

回答

0

如果错误确实发生在您发布的insert声明中,我注意到您没有为authorid列插入任何值,即列n有一个外键定义。

通常情况下,这应该是好的,因为它应该简单地插入NULL,并且不会违反外键约束。

但是,如果在notes表中的列authorid有一个默认值规范,可以尝试插入不能在author表中找到一个无效的默认值,从而给你的错误。

您可能想要验证authorid列的定义方式,并根据需要进行调整。

或者,请确保您在insert声明中为authorid设置了适当的值。

+0

不知道为什么你删除我的问题上的答案。编辑正确后。 –

+0

@Juan:哈。是的,我基本上有答案,但我必须去吃饭,没有时间思考,所以我宁愿删除它,让别人回答。 – sstan