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 問題便可解決。
相關文章
相關標籤/搜索