yuandan 发表于 2016-10-22 08:39:45

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]
查看完整版本: MySQL创建外键的时候发生: ERROR 1005: Can't create table (errno: 150)