代码:1452。无法添加或更新子行:外键约束失败(`WW2`

Posted

技术标签:

【中文标题】代码:1452。无法添加或更新子行:外键约束失败(`WW2`【英文标题】:Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`WW2` 【发布时间】:2021-07-16 23:00:58 【问题描述】:

我在 mysql Workbench 中创建了如下所示的表:

LUFEWAFFE 表:

CREATE TABLE IF NOT EXISTS Luftwaffe(
id_Luftwaffe INTEGER NOT NULL UNIQUE AUTO_INCREMENT,
id_Rollen INTEGER NOT NULL,
Bezeichnung VARCHAR(255),
id_Tragflaeche INTEGER NOT NULL,
PRIMARY KEY(id_Luftwaffe),
FOREIGN KEY (id_Rollen) REFERENCES Luftwaffe (id_Luftwaffe),
FOREIGN KEY (id_Tragflaeche) REFERENCES Luftwaffe (id_Luftwaffe)
);

TRAGFLAECHE 表

CREATE TABLE IF NOT EXISTS Tragflaeche(
id_Tragflaeche INTEGER NOT NULL UNIQUE AUTO_INCREMENT,
TragflaecheAnzahl INTEGER,
PRIMARY KEY(id_Tragflaeche)
);

LUFTWAFFE 的 INSERT.sql 日期

INSERT INTO Luftwaffe (id_Luftwaffe,id_Rollen,Bezeichnung,id_Tragflaeche)
VALUES (1,1 ,"Ar 64",2),
   (4,1 ,"Ar 76",2),
   (5,1,"Ar 197",2),
   (6,1,"Ar 240",1),
   (7,1,"Ar 440",1),
   (8,1,"Fi 98",2),` 

所以当我尝试运行它时:

代码:1452。无法添加或更新子行:外键约束失败(WW2.Luftwaffe,CONSTRAINT Luftwaffe_ibfk_2 FOREIGN KEY (id_Tragflaeche) REFERENCES Luftwaffe (id_Luftwaffe))

我真的不明白错误是什么。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

在 Luftwaffe 表中,您有一个引用同一个表的 fk,因此一条记录中的 id_Tragflaeche 引用了另一条记录中的 id_Luftwaffe。

您正在向 id_Tragflaeche = 2 的表中插入记录,但该表中没有 id_Luftwaffe = 2 的现有记录,因此 FK 约束失败

【讨论】:

你的意思是我现在需要引用 tbl_Tragfleache 和其他表吗? 没有。您已经在该表中创建了父子关系(我假设这是您想要做的?),因此在插入子记录之前,您需要插入父记录。最终父记录要么需要在其 id_Tragflaeche 字段中为空,要么让 id_Tragflaeche 和 id_Luftwaffe 具有相同的值 谢谢,你帮了大忙

以上是关于代码:1452。无法添加或更新子行:外键约束失败(`WW2`的主要内容,如果未能解决你的问题,请参考以下文章

:完整性约束违规:1452 无法添加或更新子行:laravel 迁移中的外键约束失败

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

SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败

完整性约束违规:1452 无法添加或更新子行:外键约束失败

Laravel 迁移 - 违反完整性约束:1452 无法添加或更新子行:外键约束失败

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败