MySQL设置外键失效的原因有以下几种:
数据类型不匹配:外键字段和参照字段的数据类型不一致,如外键字段是int类型,而参照字段是varchar类型。
字段名不匹配:外键字段和参照字段的字段名不一致。
表引擎不支持外键约束:MySQL的不同存储引擎对外键的支持有所差异,例如MyISAM引擎不支持外键约束。
表定义顺序不正确:如果创建外键的表在被引用的表之后创建,那么外键约束将会失效。
数据不一致:外键约束要求外键字段的值必须存在于参照字段中,如果外键字段的值不存在于参照字段中,那么外键约束将会失效。
禁用外键检查:MySQL提供了禁用外键检查的功能,如果外键检查被禁用了,那么外键约束将会失效。
外键约束被删除:外键约束被手动删除或者由于某种原因被自动删除,那么外键约束将会失效。
总之,以上是导致MySQL设置外键失效的一些常见原因,需要注意检查和排除这些原因才能保证外键约束的有效性。