![](/img/trans.png)
[英]ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails That I can't fix
[英]Error 1452 'Cannot add or update a child row'
我正在尝试向表Bridges中插入新记录,我相信程序正在尝试在Bridges表中使用Bridge_ID而不是User_ID。 我在Ubuntu OS上使用MySQL和Python。
我已经尝试过的事情:
搜索堆栈溢出(以及许多其他站点)
问我的老师
空运行代码
sql DDL:
CREATE TABLE User (
User_ID INT NOT NULL AUTO_INCREMENT,
Username VARCHAR(30) NOT NULL,
Email VARCHAR(50) NOT NULL,
Password VARCHAR(64) NOT NULL,
PRIMARY KEY (User_ID)
);
CREATE TABLE Bridges(
User_ID INT NOT NULL,
Bridge_ID INT NOT NULL AUTO_INCREMENT,
Bridge_Name VARCHAR(30) NOT NULL,
BridgeFile BLOB NOT NULL,
Date_Last_Edit DATE NOT NULL,
Difficulty VARCHAR(10) NOT NULL,
Land_Type INT NOT NULL,
PRIMARY KEY (Bridge_ID),
FOREIGN KEY User_ID REFERENCES User(User_ID)
);
值得注意的是,info ['User_ID']不会从1更改,并且在插入记录之前,回显User_ID保留的值以确认这一点。
进行的查询是:
command = ('INSERT INTO Bridges
(User_ID,Bridge_Name,Date_Last_Edit,
BridgeFile,Difficulty,Land_Type)
VALUES ("%s","%s",CURDATE(),"%s","%s","%s");' %(info['User_ID'],name,adjacencyList,info['dif'],info['land']))
错误是:
(1452,“不能添加或更新子行,外键约束失败(
BridgeBuilder
,Bridges
,约束Bridges_ibfk_1
外键(Bridge_ID
)参考文献User
(User_ID
))”)
如果需要更多详细信息,请更新帖子。
您应该检查值info ['User_ID']是否正确。 表Bridges
要求表User
存在User_ID
我认为您没有正确将参数传递给查询。
请试试 :
sql = ("INSERT INTO Bridges
(User_ID, Bridge_Name, Date_Last_Edit, BridgeFile, Difficulty, Land_Type)
VALUES (%s, %s, CURDATE(), %s, %s, %s)"
vals = (info['User_ID'], name, adjacencyList, info['dif'], info['land'])
然后,您可以使用以下命令执行查询:
mycursor = mydb.cursor()
mycursor.execute(sql, vals)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.