gpt4 book ai didi

mysql - 为什么我不断收到错误 1005 : Can't create table (errno: 150)?

转载 作者:行者123 更新时间:2023-11-29 12:35:19 24 4
gpt4 key购买 nike

我按照上述顺序创建了下表。但在创建 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),

在您的 Section 表中,您有两列定义为主键主键(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;

在这里查看演示 fiddle http://sqlfiddle.com/#!2/741b2

关于mysql - 为什么我不断收到错误 1005 : Can't create table (errno: 150)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com