代码: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
,CONSTRAINTLuftwaffe_ibfk_2
FOREIGN KEY (id_Tragflaeche
) REFERENCESLuftwaffe
(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 迁移中的外键约束失败
SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败