mysql学习问题-Foreign key constraint is incorrectly formed

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、主键和外键的字符编码不一致,也可能存储引擎不一样

 
原文地址:https://www.cnblogs.com/shishibuwan/p/10863347.html