mySQL中发生[err] 1005 - 错误(err:150)

在创建外键的过程中,出现了这个错误,通过对表和字段检查了又检查,始终没有发现问题出现在哪里,尝试了很多方法,对这个问题进行了一些简单的研究,现将解决方法整理如下:

1、两个字段的类型不一致。例如,一个是int(10),而另一个却是varchar(10)。你还要检查,是不是一个选择了无符号,而另一个没有选择。

2、字段长度不一致,例如,一个是int(10),另一个却是int(11)。

3、主表字段不是主键,如果你不能把它设为主键,那么可以为其创建一个索引。

4、主表字段是复合主键的一部分,并且这个字段没有它自己的索引。如果是这个问题,那么就为这个字段创建一个单独的索引吧。

5、外键指定了删除时SET NULL,但是该字段被设置为NOT NULL。Mysql无法解决这个问题,你只能修改其中一个地方的设置了。

6、表的引擎不一致,比如一个表是engine=innodb,另一个却是engine=MyISAM,存储引擎不一样,都改成InnoDB就可以了,不要都改成MyISAM,因为MyISAM不支持外键,不支持事务。

7、外键的名字重复了。一个数据库中外键名字必须是唯一的。试着添加一些随机字符看看能不能创建成功。

8、ALTER语句写错了,从表表名写错了,从表字段写错了,主表表名写错了,主表字段写错了。

原文链接:https://blog.csdn.net/BeiisBei/article/details/101381172

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值