时间:2010-07-26 12:06:28

标签: mysql innodb

9 个答案:

答案 0 :(得分:121)

根据要求,现在作为答案...

当使用MySQL Query Browser或phpMyAdmin时,似乎为每个查询(bugs.mysql.com/bug.php?id=8280)打开了一个新连接,因此需要在一个查询中编写所有drop语句,例如。

SET FOREIGN_KEY_CHECKS=0; 
DROP TABLE my_first_table_to_drop; 
DROP TABLE my_second_table_to_drop; 
SET FOREIGN_KEY_CHECKS=1; 

SET FOREIGN_KEY_CHECKS=1作为额外安全措施的地方......

答案 1 :(得分:101)

答案 2 :(得分:47)

答案 3 :(得分:28)

来自this blog

您可以暂时禁用外键检查:

SET FOREIGN_KEY_CHECKS=0;

一旦你搞得一团糟,就确保恢复它们:

SET FOREIGN_KEY_CHECKS=1;

答案 4 :(得分:6)

希望它的工作

SET foreign_key_checks = 0; DROP TABLE table name; SET foreign_key_checks = 1;

答案 5 :(得分:1)

在Rails上,可以使用rails console

执行以下操作
connection = ActiveRecord::Base.connection
connection.execute("SET FOREIGN_KEY_CHECKS=0;")

答案 6 :(得分:0)

以前使用此表时可能会收到错误。您可以重命名该表并尝试再次删除它。

ALTER TABLE `area` RENAME TO `area2`;
DROP TABLE IF EXISTS `area2`;

答案 7 :(得分:0)

我找到了一个简单的解决方案,导出数据库,在文本编辑器中编辑它想要编辑的内容,然后导入它。完成

答案 8 :(得分:-1)

无法删除或更新父行:外键约束失败(table1user_role,CONSTRAINT FK143BF46A8dsfsfds@#5A6BD60 FOREIGN KEY(user_id)参考userid))

我用两个简单的步骤做了什么。首先我删除子表中的子行,如

的MySQL>从table2中删除role_id = 2&& user_id = 20;

查询正常,1行受影响(0.10秒)

和删除父级的第二步

从table1删除,其中id = 20;

查询OK,1行受影响(0.12秒)

通过这个我解决问题,这意味着删除孩子,然后删除父母

我希望你明白了。 :)