Mysql 为什么我总是遇到错误1005:Can';是否创建表(错误号:150)?

Mysql 为什么我总是遇到错误1005:Can';是否创建表(错误号:150)?,mysql,Mysql,我按照提到的顺序创建了以下表格。但是,当我创建enrolls表时,出现了一个错误 我知道这与外键约束有关。但我觉得我做的一切都是对的。我不知道我做错了什么: create table Course ( CourseNo integer(10), CourseName varchar(50), Department varchar(20), primary key (CourseNo)) Engine = InnoDB; create table Section

我按照提到的顺序创建了以下表格。但是,当我创建
enrolls
表时,出现了一个错误

我知道这与外键约束有关。但我觉得我做的一切都是对的。我不知道我做错了什么:

create table Course (
    CourseNo integer(10),
    CourseName varchar(50),
    Department varchar(20),
    primary key (CourseNo)) Engine = InnoDB;

create table Section (
    CourseNo integer(10),
    SectionNo integer(10),
    Instructor varchar(50),
    primary key (CourseNo, SectionNo),
    foreign key (CourseNo) references Course(CourseNo)) Engine = InnoDB;

create table Student (
    SSN varchar(9),
    FirstName char(50),
    LastName char(50),
    Street char(50),
    City char(50),
    State char(50),
    Zip char(5),
    primary key (SSN)) Engine = InnoDB;

create table Enrolls (
    SSN varchar(9),
    SectionNo integer(10),
    CourseNo integer(10),
    foreign key (SectionNo) references Section(SectionNo),
    foreign key (CourseNo) references Section(CourseNo),
    foreign key (SSN) references Student(SSN),
    primary key (SSN, SectionNo, CourseNo)) Engine = InnoDB;

否,您在定义外键时出错。下面的那个是精确的

foreign key (SectionNo) references Section(SectionNo)
foreign key (CourseNo) references Section(CourseNo),
部分
表中,有两列定义为主键
主键(CourseNo,SectionNo)
。因此,在FK中,必须使用两个字段/列引用这两个字段

foreign key (CourseNo, SectionNo) references Section(CourseNo, SectionNo)
这意味着,必须以以下方式创建最后一个表:

create table Enrolls (
    SSN varchar(9),
    SectionNo integer(10),
    CourseNo integer(10),
    primary key (SSN, SectionNo, CourseNo),
    foreign key (CourseNo, SectionNo) references Section(CourseNo, SectionNo)
    ) Engine = InnoDB;

在这里观看小提琴演示

非常感谢!很有道理!