前言:
用Navicat为mysql数据库的两个表之间建立外键关系,出现“cannot add foreign key constraint”错误,当时真的不知道是怎么回事儿,~~~~(>_<)~~~~,不过,说到这儿,先谈谈外键的建立吧。
外键建立:
把表t_stuschoolregisterinfo的IDCard字段设成外键,关联表t_stupersoninfo的IDCard字段。
打开Navicat找到t_stuschoolregisterinfo表,选中它,点击上面的设计表。
然后在点击“外键”,如下图。
设计外键的界面,有七列:
名(name):可以不填,保存时会自动生成。
栏位(FieldName):要设置的外键,如:t_stuschoolregisterinfo 里的IDCard
参考数据库(Reference DataBase):外键关联的数据库
被参考表(Reference Table):关联的表,这里是t_stupersoninfo表
参考栏位(Forgin filed Names):关联的字段,t_stupersoninfo里的IDCard
删除时(ondelete):删除时候的动作,当时我选择的是SETNULL
更新时(onupdate):更新时候的动作,我选择的是CASCADE
以上字段也可以按照自己的需求填写,设置完成后保存即可。
问题:
当我保存时提示错误“cannot add foreign key constraint”,不能成功创建外键约束。从网上搜了很多,主要有一下几种情况吧:
1)要关联的字段类型或长度不一致。
2)两个要关联的表编码不一样。
3)某个表已经有记录了。
4)将“删除时”和“更新时”都设置相同,如都设置成CASCADE。
我从第一种情况开始检查,最后是通过第四个方法解决的问题,尽管解决后感觉并不难,但当时真的有点迷惑,整个搜索寻找解决办法的过程是很有收获的。
补充:
在设置外键的过程中也遇到了下面的问题。
原因:
某个表已经有记录了,添加外键失败,这时候只需要将两个要关联的表中的数据清空再从新添加外键关系即可。
总结:
通过用借助Navicat对mysql的学习从中收获到了很多,也遇到了不少的问题,但我觉的这正是一个成长的过程,遇到的问题无论大小,解决了自己就成长了,还是很值的的,感触很深,多多实践吧,相信你也会收获很多。
---------------------
作者:袁甜梦
来源:CSDN
原文:https://blog.csdn.net/ytm15732625529/article/details/53729155
版权声明:本文为博主原创文章,转载请附上博文链接!