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

在创建数据库表时出现创建表失败的情况,如下:

# 创建部门表
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
MySQL报错、错误代码: 1005 Can‘t create table ‘数据库名.表名‘ (errno: 150) ?_第1张图片
这种错误一般是由从表的外键和主表的主键不对应引起的

  • 仔细观察后发现department中的 depid 主键字段是UNSIGNED 无符号型的;
  • 把从表employee中的 depid 也加上UNSIGNED 问题即可解决。

你可能感兴趣的:(MySQL,mysql,数据库)