我收到了这个错误:
1452 - 无法添加或更新子行:外键约束 失败。
我找到了他们并尝试用
删除引用alter table tillhör drop foreign key kat_id;
但是却得到了这个错误:
#1025 - 将“。\ recept \ tillh \\ t @ 1ir”重命名为“。”时出错 '。\ recept#sql2-1570-3cb'(错误号码:152)。
我做错了什么?
答案 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