CREATE TABLE t_employee( emp_id INT(3) PRIMARY KEY, emp_no INT(3) UNIQUE NOT NULL, emp_name VARCHAR(10) NOT NULL, emp_age tinyint(4) NOT NULL DEFAULT 25 CHECK (emp_age BETWEEN 20 AND 60), sex VARCHAR(1) CHECK (sex in ('男','女')), job VARCHAR(20), sal INT(10), -- inline写法 -- REFERENCES 主表(主表字段) -- dept_no int REFERENCES t_dept(dept_no) -- outline写法 dept_no int NOT NULL , FOREIGN KEY(dept_no) REFERENCES t_dept(dept_no) ON DELETE SET NULL );
上述报错:
[Err] 1005 - Can't create table `test`.`t_employee` (errno: 150 "Foreign key constraint is incorrectly formed")
原因:
格式为 dept_no int NOT NULL , 但是外键却为
FOREIGN KEY(dept_no) REFERENCES t_dept(dept_no) ON DELETE SET NULL ,删除格式的NOT NULL 即可
该错误一般出现原因如下:
1、外键的引用类型不一样,如主键是int外键是char
2、找不到主表中引用的列
3、主键和外键的字符编码不一致,也可能存储引擎不一样