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

    );

按照上边的代码想在数据库 test 内创建两个表(department、course)结果发现在添加表 course 时会出现Cannot add foreign key constraint错误

MySQL 不能添加外键:Cannot add foreign key constraint错误

在网上找了很久的解决方法依然解决不了,后来才发现是 mysql 的语法问题,mysql 在创建表的同时添加外键约束的语句格式是 foreign key(字段名)references 表 (字段名)。也就是说如果要在创建表 course 的同时加入外键约束需要这么写添加外键约束的语句:

foreign key (dept_name) references department(dept_name) on delete set null
这样就可以创建 course 表了!

MySQL 不能添加外键:Cannot add foreign key constraint错误

我在这个问题上卡了一天,因为在数据库系统概念(第6版)的书上就是按第一种格式写的,所以一直没想到是 mysql 不能接受这一语法格式而造成的语法问题,在此记录一下,也希望为和我遇到相同问题的朋友们提供解决方法。