一尘不染

MySQL Errno 150

mysql

我正在创建一些简单的表,但无法传递此外键错误,而且我不确定为什么。这是下面的脚本。

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 Workbench 5.2


阅读 267

收藏
2020-05-17

共1个答案

一尘不染

如果您使用的是InnoDB引擎,那ON DELETE SET DEFAULT是您的问题。以下是手册摘录:

虽然MySQL服务器允许使用SET DEFAULT,但InnoDB拒绝它为无效。InnoDB表不允许使用此子句的CREATE TABLE和ALTER
TABLE语句。

您可以使用ON DELETE CASCADEor ON DELETE SET NULL,但不能使用ON DELETE SET DEFAULT。还有更多的信息在这里

2020-05-17