17

我收到此错误:

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

我已经找到了它们并尝试摆脱引用

alter table tillhör drop foreign key kat_id;

但是得到了这个错误:

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

我做错了什么?

4

4 回答 4

37

在查询运行之前

SET FOREIGN_KEY_CHECKS=0

完成后将其设置为 1。

于 2013-09-23T17:39:05.823 回答
15

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

如果子表包含一些具有外键但不在父表中的数据,即如果有两个名为Person(列 id、name、address)和order(列 id、person_id、order_name)的表,则会发生这种情况;order.person_id 是 person.id 的外键,并且 order 表包含 person_id ,它不在 person 表中

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

Delete from order where person_id NOT IN (select id from person where person.id = order.person_id)
于 2013-12-02T11:50:21.413 回答
7

当我遇到这个问题时,这是由于我在创建外键 id 字段时忘记指定允许的 NULLS。事后我更改了它,但值中已经有 0 了。它在匹配表中找不到0,然后给出了这个错误。修复:将零值更新为空值。

于 2015-06-12T21:05:37.517 回答
0

您必须从父表到子表设置空值或设置相同的值,例如子表首先 nam=Derick 父表名称=Derick

于 2017-08-19T23:10:44.410 回答