本文主要是介绍mysql [Err] 1005 - Can't create table '.\ \#sql-b34_61.frm' (errno: 150),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我创建外键时,得到了这个错误,我对表和字段检查了又检查,始终没有发现问题出现在哪里,google了很多下,也百度了很多下,最终从国外的一封信件中得到了提示:两个字段一个选择了无符号,而另一个没有选,会导致外键无法创建。随后,我又对这个问题进行了一些简单的研究,发现以下情况都会导致这个错误:
1、两个字段的类型不一致。例如,一个是int(10),而另一个却是varchar(10)。你还要检查,是不是一个选择了无符号,而另一个没有选择。
2、字段长度不一致,例如,一个是int(10),另一个却是int(11)。
3、主表字段不是主键,如果你不能把它设为主键,那么可以为其创建一个索引。
4、主表字段是复合主键的一部分,并且这个字段没有它自己的索引。如果是这个问题,那么就为这个字段创建一个单独的索引吧。
5、外键指定了删除时SET NULL,但是该字段被设置为NOT NULL。Mysql无法解决这个问题,你只能修改其中一个地方的设置了。
6、表的引擎不一致,比如一个表是engine=innodb,另一个却是engine=MyISAM。
7、外键的名字重复了。一个数据库中外键名字必须是唯一的。试着添加一些随机字符看看能不能创建成功。
8、ALTER语句写错了,从表表名写错了,从表字段写错了,主表表名写错了,主表字段写错了。。。
经历以上步骤后,希望你的问题解决了。如果你通过其他的办法解决了这一问题,也欢迎并感谢您写下评论。以供“后人”借鉴。
这篇关于mysql [Err] 1005 - Can't create table '.\ \#sql-b34_61.frm' (errno: 150)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!