创建外键不成功

来源:5-6 外键约束的使用

SPKK

2018-04-03 16:20:25

代码如下:

CREATE TABLE news_cate(

  id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',

  cateName VARCHAR(50) NOT NULL UNIQUE COMMENT '分类名称',

  cateDesc VARCHAR(100) NOT NULL DEFAULT '' COMMENT '分类描述'

)ENGINE=InnoDB CHARSET=UTF8;


CREATE TABLE news(

  id INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',

  title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',

  content VARCHAR(100) NOT NULL COMMENT '新闻内容',

  cateId TINYINT NOT NULL COMMENT '新闻所属分类编号',

  FOREIGN KEY(cateId) REFERENCES news_cate(id)

)ENGINE=InnoDB CHARSET=UTF8;

当创建news表时弹出ERROR 1215 (HY000): Cannot add foreign key constraint,

WAMP环境,MySQL 5.7.19,求助求助

写回答

1回答

SPKK

提问者

2018-04-03

经查阅资料,发现外键关联时类型要一致,news_cate中的id是TINY且UNSIGNED,news中的cateId只是TINY,怀疑和这个有关。

验证了在cateId类型中增加UNSIGNED,可创建并且无报错:

CREATE TABLE news(

  id INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',

  title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',

  content VARCHAR(100) NOT NULL COMMENT '新闻内容',

  cateId TINYINT UNSIGNED NOT NULL COMMENT '新闻所属分类编号',

  FOREIGN KEY(cateId) REFERENCES news_cate(id)

)ENGINE=InnoDB CHARSET=UTF8;

是否为版本原因或者是开发环境原因所致呢?为何视频中的可以?

0
hmooc_澈
h 你好,这应该是老师关闭了自己mysql的严格模式,你可以运行以下代码然后再尝试: select @@sql_mode; set GLOBAL sql_mode=' '; 这两行代码的作用为取消严格模式。 祝学习愉快~
h018-04-03
共2条回复

0 学习 · 4928 问题

查看课程