我正在创建几个简单的表,但是我无法传递这个外键错误,我不知道为什么。下面是剧本。
create TABLE Instructors (
ID varchar(10),
First_Name varchar(50) NOT NULL,
Last_Name varchar(50) NOT NULL,
PRIMARY KEY (ID)
);
create table Courses (
Course_Code varchar(10),
Title varchar(50) NOT NULL,
PRIMARY KEY (Course_Code)
);
create table Sections (
Index_No int,
Course_Code varchar(10),
Instructor_ID varchar(10),
PRIMARY KEY (Index_No),
FOREIGN KEY (Course_Code) REFERENCES Courses(Course_Code)
ON DELETE cascade
ON UPDATE cascade,
FOREIGN KEY (Instructor_ID) REFERENCES Instructors(ID)
ON DELETE set default
);错误代码: 1005。无法创建表“336_project.sections”(errno: 150)
我的数据类型似乎是相同的,语法似乎是正确的。有人能指出我在这里看不到的东西吗?
我正在使用MySQL工作台5.2
发布于 2013-04-26 01:28:32
如果您使用的是InnoDB引擎,那么ON DELETE SET DEFAULT就是您的问题。下面是手册的摘录:
虽然SET默认设置是MySQL服务器允许的,但InnoDB拒绝它为无效。InnoDB表不允许使用此子句创建表和ALTER语句。
您可以使用ON DELETE CASCADE或ON DELETE SET NULL,但不能使用ON DELETE SET DEFAULT。还有更多的信息,这里。
发布于 2013-12-04 15:12:15
如果将不同类型的列关联起来,例如,也会发生此错误。int在源表中,BigInt在目标表中。
发布于 2015-03-31 16:01:03
你可以跑
SHOW ENGINE INNODB STATUS以人类可读的格式读取故障原因
例如:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
150331 15:51:01 Error in foreign key constraint of table foobar/#sql-413_81:
FOREIGN KEY (`user_id`) REFERENCES `foobar`.`users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE:
You have defined a SET NULL condition though some of the columns are defined as NOT NULL.https://stackoverflow.com/questions/16227199
复制相似问题