我对在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“错误1005(HY000):无法创建表’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 |
我感觉好像缺少了一些基本的东西,但是似乎看不到它。有什么建议吗?
您应该在被引用表之后添加被引用列的名称 REFERENCES Students(sid)。因此,您必须将代码更改为以下解决方案
REFERENCES Students(sid)
CREATE TABLE Enrolled ( sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES Students(sid) );