首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Errno 150

MySQL Errno 150
EN

Stack Overflow用户
提问于 2013-04-26 01:13:00
回答 9查看 57.9K关注 0票数 21

我正在创建几个简单的表,但是我无法传递这个外键错误,我不知道为什么。下面是剧本。

代码语言:javascript
复制
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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-04-26 01:28:32

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

虽然SET默认设置是MySQL服务器允许的,但InnoDB拒绝它为无效。InnoDB表不允许使用此子句创建表和ALTER语句。

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

票数 24
EN

Stack Overflow用户

发布于 2013-12-04 15:12:15

如果将不同类型的列关联起来,例如,也会发生此错误。int在源表中,BigInt在目标表中。

票数 35
EN

Stack Overflow用户

发布于 2015-03-31 16:01:03

你可以跑

代码语言:javascript
复制
SHOW ENGINE INNODB STATUS

以人类可读的格式读取故障原因

例如:

代码语言:javascript
复制
------------------------
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.
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16227199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档