MySQL建外键报错:Error Code: 1215. Can

2016-11-09  本文已影响0人  幸运的卢克

今天使用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>

上一篇下一篇

猜你喜欢

热点阅读