MySQL外键约束错误(errno:150)求助:创建showing表时出错
搞定MySQL Errno:150 外键约束错误
嘿,我来帮你搞定这个MySQL外键的问题!你碰到的Errno:150和“Foreign key constraint is incorrectly formed”错误,其实大多是几个常见的小问题导致的,结合你已经创建的Complex表,我给你列几个排查方向:
外键字段与关联主键必须完全匹配
你创建的Complex表主键是varchar(50)类型,那showing表中用来关联它的外键字段,必须和这个类型完全一致——包括字段类型、长度,甚至字符集和排序规则都不能差。比如不能用varchar(40)或者char(50),哪怕只是长度少了10,都会触发这个错误。确保关联表已经提前创建
要先创建Complex表,再创建showing表哦!MySQL没法给一个还不存在的表添加外键约束,如果顺序搞反了,肯定会报错。确认关联字段是主键/唯一索引
这点你已经做对啦——Complex表的name字段是主键,满足外键关联的要求。要是你以后用其他字段做关联,记得要给那个字段加唯一索引才行。检查表引擎是否支持外键
只有InnoDB引擎支持外键约束,MyISAM是不支持的。你可以用SHOW CREATE TABLE Complex;命令查看Complex表的引擎,如果是MyISAM的话,得改成InnoDB才能创建外键。避免外键约束命名重复
如果之前已经创建过同名的外键约束,也会触发这个错误,不过这个情况相对少见,你可以先排查前面几个点。
给你一个符合要求的showing表创建示例,你可以参考:
CREATE TABLE showing ( showing_id INT AUTO_INCREMENT PRIMARY KEY, complex_name VARCHAR(50) NOT NULL, movie_title VARCHAR(100) NOT NULL, show_time DATETIME NOT NULL, -- 其他你需要的字段 FOREIGN KEY (complex_name) REFERENCES Complex(name) );
内容的提问来源于stack exchange,提问作者Liam Strathdee
相关产品推荐
相关产品推荐

