微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MYSQL-无法添加外键约束,但是为什么呢?

如何解决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 举报,一经查实,本站将立刻删除。