1452 - 无法添加或更新子行:外键约束失败

时间:2013-09-23 17:35:20

标签: mysql sql foreign-keys

我收到了这个错误:

  

1452 - 无法添加或更新子行:外键约束   失败。

我找到了他们并尝试用

删除引用
alter table tillhör drop foreign key kat_id;

但是却得到了这个错误:

  

#1025 - 将“。\ recept \ tillh \\ t @ 1ir”重命名为“。”时出错   '。\ recept#sql2-1570-3cb'(错误号码:152)。

我做错了什么?

4 个答案:

答案 0 :(得分:38)

在查询运行之前

SET FOREIGN_KEY_CHECKS=0

然后在完成后将其设置为1.

答案 1 :(得分:13)

我面临同样的问题。我通过清除,即删除子表中的所有数据并成功完成来解决此问题。

如果子表包含一些不在父表中的外键的数据,即如果有两个名为 Person 的表(具有列id,名称,地址)和< strong> order (列id,person_id,order_name); order.person_id是person.id的外键,order表包含person表中不存在的person_id

您可以使用以下查询解决此问题

Delete from order where person_id NOT IN (select id from person where person.id = order.person_id)

答案 2 :(得分:7)

当我遇到此问题时,原因是我在创建外键ID字段时忘记指定NULLS。之后我改变了它,但是0已经在价值中了。它在匹配表中找不到0,然后给出了这个错误。修复:将零值更新为空值。

答案 3 :(得分:0)

您必须将空值设置为从父表到子表 或者设置相同的值,例如 儿童表第一名nam =德里克 父表名= Derick