MySQL建外键报错:Error Code: 1215. Cannot add foreign key constraint

今天使用Hibernate的时候,它会自动帮助建立表外键,但是报错了,仔细一看问题出在MySQL上,原因如下:
分类表:
<code>
CREATE TABLE category (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
sort int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</code>

文章表:
<code>
CREATE TABLE article (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
category_id int(10) unsigned NOT NULL DEFAULT '0',
title varchar(45) NOT NULL DEFAULT '',
content text NOT NULL,
status tinyint(4) NOT NULL DEFAULT '0',
create_time int(10) unsigned NOT NULL DEFAULT '0',
update_time int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</code>

外键是,article.category_id 关联 category.id ;

出错的原因在于2个字段的int的类型不同,article.category_id 有 unsigned 属性,而 category.id 没有这个属性。

最终category表的结构如下:
<code>
CREATE TABLE category (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
sort int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</code>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容