在建立数据库表时出现建立表失败的状况,以下:sql
# 建立部门表 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 问题便可解决。