一尘不染

MySQL中的外键:错误1005

sql

我对在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 |

我感觉好像缺少了一些基本的东西,但是似乎看不到它。有什么建议吗?


阅读 198

收藏
2021-03-08

共1个答案

一尘不染

您应该在被引用表之后添加被引用列的名称 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)
);
2021-03-08