数据库
首页 > 数据库> > MySQL中的外键:错误1005

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