mysql-创建外键时出现Cannot add foreign key constraint

mysql-创建外键时出现Cannot add foreign key constraint,第1张

问题:

我想在students表中创建外键ClassID,关联到class表中的主键ClassID上,要求级联更新删除,但创建外键过程中显示Cannot add foreign key constraint。

先看一下关联表结构,

出现该问题时要考虑一下几点:

分步来看:

查看单张表使用存储引擎的SQL语句:

结果如下:

可以看出classes表的引擎是MyISAM,想创建外键必须改为InnoDB

修改表引擎的SQL语句如下:

修改后结果如下:

由之前的表结构可看出,两个字段的类型均为int(16)

如需修改字段类型,可用SQL语句:

由上边表结构可以看出,classes表中ClassID的default值为0,而students表中ClassID的default值为NULL,因此需要修改字段的default。

修改字段default的SQL语句:

修改后结果为:

三步修改完成后再次尝试创建外键

*** 作成功,结果如下:

我遇到的原因:由于我的 tb_article 表的category_id设置为 not null ,并且 tb_category 的主键 id 也为 not null ,但是我的的 tb_article 表中的一行数据中, category_id 为 null ,所以就创建失败了

把 category_id 字段填写好,就OK了

你的 tb_aryicle 的 category_id 字段的设置,和 tb_category 的 id 字段的设置不一样,一定要保证他们 datatype 和一些属性(如: not null 等)一致。

这也是之前遇到过的问题,这里记录一下

我遇到的原因:当前数据表和引用表的对应字段属性不一样(疏忽大意)

把当前数据表的 category_id 字段改成varchar类型就好了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/7987789.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存