Mysql创建外键时报errno150,Can’t create table错误

报错原因1: 主键与外键的字符类型不匹配

首先创建两张如下的表然后执行,发现two表创建失败,检查之后分析原因得出是因为主键与外键的字符类型不匹配,one表的id是int类型,two表的tid是char(10)类型,这时只要改为一致的字符类型就解决问题了。

如果发现自己创建的表,主键外键字符类型一样,那就考虑其它可能,请接着看。

create table one(
id int primary key,
oname VARCHAR(30)
);
create table two(
tid char(10),
tname VARCHAR(30),
constraint t_o_sk foreign key (tid) references one(id) on delete cascade on update cascade
##on delete cascade是级联删除,on update cascade 是级联更新
);

报错原因2:主表的主键不是primary key

如果是的话,表又创建好了,那么可以用alter进行修改即可。

这种问题发现没有解决问题的话,那可能下面的考虑第三种情况了。

alter table one modify id  int primary key;

报错原因3:检查字符编码是否一致

报错原因4:找不到外键引用的列

列在增加外键的时候,可能已经存在数据了(历史数据,或者更新数据库表时设置的默认值),但这些数据并不一定能在外键关联表中找到对应的行记录。这种情况也会导致外键创建失败。

51CTO博文
我还没有学会写个人说明!
上一篇

借助太阳能电池 这款电子皮肤可用于脑机接口、电动汽车

下一篇

使用Python验证常见的50个正则表达式

你也可能喜欢

评论已经被关闭。

插入图片