MySQL报错、错误代码: 1005 Can‘t create table ‘数据库名.表名‘ (errno: 150) ?

在建立数据库表时出现建立表失败的状况,以下: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
error
这种错误通常是由从表的外键和主表的主键不对应引发的

数据库

  • 仔细观察后发现department中的 depid 主键字段是UNSIGNED 无符号型的;
  • 把从表employee中的 depid 也加上UNSIGNED 问题便可解决。
相关文章
相关标签/搜索