一、问题现象:
MySql添加外键约束时,报错:
Create table 'db01/#sql-15a8_3' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns.
建表语句:
create table tb_dept ( id int unsigned auto_increment comment 'ID' primary key, name varchar(10) not null comment '部门名称', constraint name unique (name) );
create table tb_emp ( id int auto_increment comment '主键ID' primary key, username varchar(20) not null comment '用户名', name varchar(10) not null comment '姓名', ... entry_date date null comment '入职时间', dept_id int null )
二、期望创建的外键:
alter table tb_emp add constraint tb_emp_dept_id foreign key (dept_id) references tb_dept(id);
也即tb_emp表的 dept_id字段引用tb_dept表的id字段。
三、问题原因:
两者字段不一致!tb_dept.id为int unsigned,而tb_emp.dept_id为int。都修改为int unsigned后,创建外键成功: