虚假外键约束失败
尝试从数据库中删除名为区域的表时,遇到一条错误消息,指示外键约束失效。尽管删除了所有其他与区域有外键关系的表,但约束仍然存在。
可能的原因
InnoDB,数据库使用的存储引擎,通常不允许外键引用当前模式之外的表。因此,令人费解的是为什么外键约束仍然阻止区域表的删除。
解决方案
经过进一步调查,发现某些数据库工具,例如 MySQL 查询浏览器或 phpMyAdmin,为每个查询打开一个新连接。此行为可防止更改在多个查询之间传播。要解决此问题,需要在单个查询中执行所有 drop 语句:
SET FOREIGN_KEY_CHECKS=0; -- Disable foreign key checks DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1; -- Re-enable foreign key checks
禁用外键检查允许删除涉及外键关系的表,而不会触发约束错误。随后重新启用外键检查可确保未来操作数据库的完整性。
以上是为什么无法使用多个查询删除具有外键约束的表?的详细内容。更多信息请关注PHP中文网其他相关文章!