用Navicat为MySQL数据库的两个表之间建立外键关系,出现“cannot add foreign key constraint”错误.
设计外键的界面,有七列:
名(name):可以不填,保存时会自动生成。
栏位(FieldName):要设置的外键,如:t_stuschoolregisterinfo 里的IDCard
参考数据库(Reference DataBase):外键关联的数据库
被参考表(Reference Table):关联的表,这里是t_stupersoninfo表
参考栏位(Forgin filed Names):关联的字段,t_stupersoninfo里的IDCard
删除时(ondelete):删除时候的动作,当时我选择的是SETNULL
更新时(onupdate):更新时候的动作,我选择的是CASCADE
以上字段也可以按照自己的需求填写,设置完成后保存即可。
创建外键失败:
创建外键的前提:
- 参照表的字段是否存在.
- 组成外键字段要求被索引,外键字段在其他表上是主键.
- 都为innodb表.
- 字段类型一样.
- 语法正确.
当我们创建外键时,外键的索引会自动建起来,这里类型要一样很重要,除了上面的,下方Unsigned也要注意 是否和原表中一样