美文网首页
MySQL建外键报错:Error Code: 1215. Can

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

作者: 幸运的卢克 | 来源:发表于2016-11-09 11:17 被阅读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>

    相关文章

      网友评论

          本文标题:MySQL建外键报错:Error Code: 1215. Can

          本文链接:https://www.haomeiwen.com/subject/cjwzuttx.html