MySQL 不能添加外键:Cannot add foreign key constraint错误
create table department
(dept_name varchar(20),
building varchar(15),
budget numeric(12,2) check (budget > 0),
primary key (dept_name)
);
create table course
(course_id varchar(8),
title varchar(50),
dept_name varchar(20),
credits numeric(2,0) check (credits > 0),
primary key (course_id),
foreign key (dept_name) references department on delete set null
(dept_name varchar(20),
building varchar(15),
budget numeric(12,2) check (budget > 0),
primary key (dept_name)
);
create table course
(course_id varchar(8),
title varchar(50),
dept_name varchar(20),
credits numeric(2,0) check (credits > 0),
primary key (course_id),
foreign key (dept_name) references department on delete set null
);
按照上边的代码想在数据库 test 内创建两个表(department、course)结果发现在添加表 course 时会出现Cannot add foreign key constraint错误
在网上找了很久的解决方法依然解决不了,后来才发现是 mysql 的语法问题,mysql 在创建表的同时添加外键约束的语句格式是 foreign key(字段名)references 表 (字段名)。也就是说如果要在创建表 course 的同时加入外键约束需要这么写添加外键约束的语句:
foreign key (dept_name) references department(dept_name) on delete set null这样就可以创建 course 表了!
我在这个问题上卡了一天,因为在数据库系统概念(第6版)的书上就是按第一种格式写的,所以一直没想到是 mysql 不能接受这一语法格式而造成的语法问题,在此记录一下,也希望为和我遇到相同问题的朋友们提供解决方法。