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

Mia*_*ger 17 mysql sql foreign-keys

我收到这个错误:

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

我找到了他们并试图摆脱参考

alter table tillhör drop foreign key kat_id;
Run Code Online (Sandbox Code Playgroud)

但是反而得到这个错误:

#1025 - 将'.\ _\_对于'.\ _对于'.\ _对于'.\ _对于'.\ recept#sql2-1570-3cb'(错误号:152)重命名.

我做错了什么?

Mih*_*hai 37

在查询运行之前

SET FOREIGN_KEY_CHECKS=0
Run Code Online (Sandbox Code Playgroud)

完成后将其设置为1.

  • 不,它只是忽略外键约束,直到你再次启用它. (3认同)

Jak*_*han 15

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

如果子表包含一些不在父表中的外键的数据,即如果有两个名为Person(具有列id,名称,地址)和顺序(具有列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)
Run Code Online (Sandbox Code Playgroud)


Cym*_*als 7

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