首先确定以下:
0.外键字段的参照字段必须是外表的主键。
1.保证字段类型、长度一致。
修改字段类型
alter table 表名 modify 字段名 新数据类型;
比如:将user表的id列的原数据类型int(10)类型修改为int(10)unsigned类型
alter table user modify int unsigned;
2.主表与外表的引擎一致。
查看引擎
show create table 表名;
3.保证字段的字符集一致。
查看MySQL支持的字符集
show charset;
查看数据库字符集
show create database 数据库名;
查看表字符集
show create table 表名;
查看字段字符集
show full columns from 表名;
如果还没解决,可对主表的外键建立普通索引。
比如,先为主表的外键列test_no建立普通索引。
alter table 主表名 add index 索引名(test_no);
然后即可将主表中的test_no设置为外键,参考外表中的bno列。
alter table 主表名 add constraint 外键名 foreign key(test_bno) references 外表名(bno);