在mysql中,当我尝试这样做时:
INSERT INTO Comandes_Productes
(Id_Comanda
,Id_Producte
)VALUES('60','10009') - > (或其他人的价值观)
例如,我收到此错误消息:#1452 - 无法添加或更新子行:外键约束失败(cafeteria
。comandes_productes
,CONSTRAINT comandes_productes_ibfk_2
FOREIGN KEY( Id_Producte
)参考comandes
(Id_Comanda
)ON UPDATE CASCADE)
我尝试做了很多提出下一个链接的解决方案,但是,我也没有解决错误。
Mysql error 1452 - Cannot add or update a child row: a foreign key constraint fails
我会告诉你代码,看看我是否有错误。
创建表:
CREATE TABLE Comandes (
Id_Comanda INTEGER(9) AUTO_INCREMENT,
Quantitat INTEGER(4),
Id_Proveidor INTEGER(9) NOT NULL,
Data DATE,
PRIMARY KEY (Id_Comanda),
FOREIGN KEY (Id_Proveidor) REFERENCES Proveidors(Id_Proveidor) ON UPDATE CASCADE
) CHARACTER SET utf8 COLLATE utf8_spanish_ci;
CREATE TABLE Productes (
Id_Producte INTEGER(9) AUTO_INCREMENT,
Marca VARCHAR(15),
Nom_Producte VARCHAR(30),
Preu_Producte FLOAT(4,2),
Quantitat INTEGER(4),
Descripcio VARCHAR(50),
Id_Proveidor INTEGER(9),
PRIMARY KEY (Id_Producte)
) AUTO_INCREMENT=10001 CHARACTER SET utf8 COLLATE utf8_spanish_ci;
CREATE TABLE Comandes_Productes (
Id_Comanda INTEGER(9),
Id_Producte INTEGER(9),
PRIMARY KEY (Id_Producte, Id_Comanda),
FOREIGN KEY (Id_Producte) REFERENCES Productes (Id_Producte) ON UPDATE CASCADE,
FOREIGN KEY (Id_Producte) REFERENCES Comandes (Id_Comanda) ON UPDATE CASCADE
) CHARACTER SET utf8 COLLATE utf8_spanish_ci;
是的,我已经在“Comandes”和“Productes”表中找到了外键值。所有表都是InnoDB,我也尝试删除所有数据库并创建其他时间,但是......没有...我看到表的规格也是一样的。
我失败了?请帮我!我不能继续我的项目...
答案 0 :(得分:1)
我发现您的Comandes_Productes
表有一个问题:
FOREIGN KEY (Id_Producte) REFERENCES Comandes (Id_Comanda) ON UPDATE CASCADE
可能应该是
FOREIGN KEY (Id_Comanda) REFERENCES Comandes (Id_Comanda) ON UPDATE CASCADE
另外,我对MySQL并不多,但在输入数值时,你可能不会使用单引号。