前言
mysql删除表时,删除失败
一、错误信息?
Cannot delete or update a parent row: a foreign key constraint fails。
二、解决
sql脚本如下:
SET FOREIGN_KEY_CHECKS = 0; -- 关闭外键检查
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名称',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 42 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '测试表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1; -- 开启外键检查
总结
很明显这是表关联生成的强制约束问题,在删除的时候回检查表之间的关联关系,从而导致无法删除,解决办法:
SET FOREIGN_KEY_CHECKS = 0; – 关闭外键检查
执行目标sql
SET FOREIGN_KEY_CHECKS = 1; – 开启外键检查