1、问题背景
用Navicat在新建表的外键时,弹出如下窗口
2、问题原因
出现上面的的报错,有如下几个因素:
(1)外键对应的字段数据类型不一致
(2)设置外键时“删除时”设置为“SET NULL”
(3)两张表的存储引擎不一致
3、处理方案
检查两张关联表对应的字段数据类型是否一致
查询存储引擎是否相同
show table status from db_name where name= 'table_name'
3、设置外键时“删除时”设置为“SET NULL”
附:
CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;NO ACTION:同 RESTRICT,也是首先先检查外键;
来源地址:https://blog.csdn.net/hsuehgw/article/details/129105563