
问题:
我想在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类型就好了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)