1215 - Cannot add foreign key constraint--表名大小写不一致导致的

mysql版本为:

5.7.35-log

 

 报错:1215 - Cannot add foreign key constraint

 

 

其他总结:

情况一:数据表存储引擎不一致

 

clipboard.png

 只有InnoDB是支持外键的。这就要求在指定外键时,两张表的引擎都要保证是InnoDB。如果这两张表任意一张表的引擎不是InnoDB,那么都会报1215 - cannot add foreign key constraint错误。

情况二:在约束表中,相关的reference数据不存在

 

情况三:在约束表中,相关的reference_column不是primary key

 

 

情况四:两个字段的类型不一样

将两个字段的类型、长度、有无符号设置 全部一致

情况五:即是外键,也是主键

比如我们把数据表中的某个字段设置为了主键,那么此主键是必然不能为null。此时,我们又设置其为外键。但在设置删除策略时,却不小把它设置为:删除时设置为null。则会发生上述异常。

clipboard.png

原因其实刚才已经阐述了:是主键,则数据必然不能为null,与我们设置的策略:外键对应的表中的数据删除时,将此数据设置为null冲突。解决方法:设置策略为No ActionRestrict,这两个值的意思一样,同为:在删除时检查约束,如果存在外键,则报约束性异常。

字段属性与删除时触发事件冲突

比如,我们设置删除时set null

clipboard.png

 

然后这个字段在本表的属性却为:

clipboard.png

 

则也会发生1215 - cannot add foreign key constraint。原因相信大家也猜大了,如果我们这样设置了,一旦发生外键的删除操作,就要按我们的设置将此字段设置为null,但我们同时又设置了此字估不能为null。当然就会发生错误了。为了规避这个错误,mysql 会在设置外键时,发生1215 - cannot add foreign key constraint

posted @ 2022-03-27 16:15  wqbin  阅读(183)  评论(0编辑  收藏  举报