MySQL中的外键:错误1005
作者:互联网
我对在MySQL中添加外键有些困惑
我想做的是参考带有以下内容的学生主键:
CREATE TABLE Enrolled(sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES Students);
但是,我得到的是
ERROR 1005 (HY000): Can't create table 'test_db.Enrolled' (errno: 150)
我四处搜寻,发现
MySQL “ERROR 1005 (HY000): Can’t create table ‘foo.#sql-12c_4’ (errno: 150)”
但是,我的学生表已经有一个主键,因此这不是问题:
| Students | CREATE TABLE Students (
sid char(20) NOT NULL DEFAULT '',
name char(20) DEFAULT NULL,
login char(10) DEFAULT NULL,
age int(11) DEFAULT NULL,
gpa float DEFAULT NULL,
PRIMARY KEY (sid)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
我感觉好像缺少了一些基本的东西,但是似乎看不到它.有什么建议吗?
解决方法:
您应该在引用表之后添加引用列名
参考学生(sid).因此,您必须将代码更改为以下解决方案
CREATE TABLE Enrolled
(
sid CHAR(20),
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid, cid),
FOREIGN KEY (sid) REFERENCES Students(sid)
);
标签:foreign-keys,sql,mysql 来源: https://codeday.me/bug/20191030/1967937.html