在创建数据库表时出现创建表失败的情况,如下:
# 创建部门表
CREATE TABLE department(
depid INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
depname VARCHAR(10) NOT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
# 创建员工表
CREATE TABLE employee(
empid INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10) NOT NULL,
sex ENUM ('男','女'),
title VARCHAR(10),
birthday DATE,
depid INT,
CONSTRAINT emp_depid_key FOREIGN KEY (depid) REFERENCES department(depid) ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=INNODB DEFAULT CHARSET=utf8;
执行后报错:1005
这种错误一般是由从表的外键和主表的主键不对应引起的
- 仔细观察后发现department中的 depid 主键字段是UNSIGNED 无符号型的;
- 把从表employee中的 depid 也加上UNSIGNED 问题即可解决。