python - 错误 1452 (23000):无法添加或更新子行:外键约束失败我无法修复
问题描述
我收到此错误:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint
fails (\`GTFS\`.\`#sql-37d_16\`, CONSTRAINT \`#sql-37d_16_ibfk_1\` FOREIGN KEY
(\`service_id\`) REFERENCES \`calendar\` (\`service_id\`))
我正在尝试使用 python 创建我的数据库表,这就是我尝试过的:
mycursor.execute("CREATE TABLE IF NOT EXISTS routes(route_id varchar(3) PRIMARY KEY, agency_id varchar(2) ,route_short_name varchar(20) ,route_long_name varchar(50) ,route_desc varchar(30) ,route_type varchar(30) ,route_url varchar(30) ,route_color varchar(30) ,route_text_color varchar(30)) ")
mycursor.execute("CREATE TABLE IF NOT EXISTS calendar (service_id varchar(4) PRIMARY KEY,monday varchar(4) ,tuesday varchar(4) ,wednesday varchar(4) ,thursday varchar(4) ,friday varchar(4) ,saturday varchar(4) ,sunday varchar(4) ,start_date varchar(8) ,end_date varchar(8)) ")
mycursor.execute("CREATE TABLE IF NOT EXISTS trips (route_id varchar(3) ,service_id varchar(4) ,trip_id varchar(6) PRIMARY KEY,trip_headsign varchar(20) ,trip_short_name varchar(3) ,direction_id varchar(1) ,block_id varchar(1) ,shape_id varchar(5) )")
mycursor.execute("ALTER TABLE trips ADD FOREIGN KEY (service_id) REFERENCES calendar(service_id); ")
mycursor.execute("ALTER TABLE trips ADD FOREIGN KEY (route_id) REFERENCES routes(route_id); ")
我希望将列表中提供的一些数据插入到我的表中,但我总是在终端中收到此错误
解决方案
因为在公共列的 parent() 表中trips.service_id
不存在 column 的某些值。calendar
service_id
您可以尝试通过这样的插入语句插入这些值:
insert into calendar(...,service_id,...)
select ...,service_id,...
from trips t
where not exists ( select 0 from calendar where service_id=t.service_id );
在添加约束之前
ALTER TABLE trips ADD FOREIGN KEY (service_id) REFERENCES calendar(service_id);
推荐阅读
- python - 大 O 表示法中的 Codility 三角问题
- python - 读取包内的 SQL 请求
- ab-initio - 如何读取在 AbInitio 中用双引号括起来的字段值中有分隔符的文件
- swift - SwiftUI 中超过 1 个警报
- c# - 是否可以使用其他泛型类型的泛型参数
- typescript - 打字稿“in operator”不适用于字符串索引
- perl - 如何应用 --space-prototype-paren=0 之类的东西,但对于带有 perltidy 的签名
- python - 如何根据百分位数从组中删除异常值
- javascript - 反应(事件) event.target.value 的 Typescript 类型定义
- flutter - 画布颤动(android应用程序)