python - 错误 1452 “无法添加或更新子行”
问题描述
我正在尝试在 Bridges 表中插入一条新记录,我相信该程序正在尝试在 Bridges 表中使用 Bridge_ID 而不是 User_ID。我在 Ubuntu 操作系统上使用 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
, CONSTRAINTBridges_ibfk_1
FOREIGN KEY (Bridge_ID
) REFERENCESUser
(User_ID
))')
如果需要更多详细信息,我会更新帖子。
解决方案
您应该检查值 info['User_ID'] 是否正确。表Bridges
要求User_ID
存在于表中User
推荐阅读
- docker - 将文件从 docker 容器保存到主机
- docker - docker-compose 中的 ffmpeg 无法启动
- bash - 数组中带有空格的字符串元素被拆分?
- r - 从 ggplot2 中的图例类别中删除 stat_summary 符号
- java - JNI CPP gradle 未找到 jni.h
- angular - 使用 angular、blob 和 createObjectURL 读取视频
- scala - 带有逗号分隔的其他列的 Spark DataFrame 列,这些列需要使用另一列中给出的值进行更新
- javascript - Puppeteer 和 react-router (BrowserRouter)
- python - GCP Python 在存储桶之间复制大文件
- android-studio - 在 AS 3.6.1 中移动资源管理器选项卡