MySQL创建外键的时候发生: ERROR 1005: Can't create table (errno: 150)
资料来源:http://venus224.iyunv.com/blog/284944
在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束。
出现问题的大致情况
1、外键的引用类型不一样,主键是int外键是char
2、找不到主表中 引用的列
3、主键和外键的字符编码不一致
4.还有要建立外键的话,要先建立索引。没有建立索引也会出错。
=======================================================
实际情况:
主键字段是utf-8编码,而需要建立外键的字段是latin
按照要求,数据库重新按照utf-8重建,解决问题
=======================================================
发现还有种问题存在:
建表语句不规范,有开发人员自己写的,有的指定了Storage Engine,有的没指定,
这样万一DB缺省的Storage Engine和写上去的不一样,这样造成在一个database中,不同的表的Storage Engine不一样,这样这些表就不能相互建立Foreign Key
页:
[1]