如何解决MYSQL-无法添加外键约束,但是为什么呢?
我不明白尝试运行此代码时无法添加外键约束。我将其范围缩小到最后一行:
外键(room_no)参考教室(room_no)
给我这个错误,因为当我删除它时,代码运行正常。有人可以向我解释这个问题吗?这段代码是一个更大的代码块的一部分,以后我似乎也会遇到相同的问题。 谢谢!
CREATE TABLE Classroom (
building VARCHAR(100),room_no SMALLINT UNSIGNED,capacity SMALLINT UNSIGNED,CONSTRAINT PK_Prereq PRIMARY KEY (building,room_no)
);
CREATE TABLE Section (
course_id INT UNSIGNED,sec_id INT UNSIGNED,semester SMALLINT UNSIGNED,year SMALLINT UNSIGNED,building VARCHAR(100),time_slot_id INT UNSIGNED,CONSTRAINT PK_Prereq PRIMARY KEY (course_id,sec_id,semester,year),FOREIGN KEY (building) REFERENCES Classroom(building),FOREIGN KEY (room_no) REFERENCES Classroom(room_no)
);
解决方法
您只希望一个外键而不是两个外键,它们引用作为父表主键的那组列。
所以改变这个:
requests.get(url2,params=data,headers=headers)
收件人:
FOREIGN KEY (building) REFERENCES Classroom(building),FOREIGN KEY (room_no) REFERENCES Classroom(room_no)
重要的是要注意:
-
列的数据类型(和长度或精度)必须相同
-
外键中的列必须与主键中的顺序相同
不相关:FOREIGN KEY (building,roo_no) REFERENCES Classroom(building,roo_no)
是a language keyword in MySQL,因此不是列名的好选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。