如何在MySQL中强制截断数据库中的所有表(所有表都是InnoDB)?

15

当我尝试截断InnoDB表时,我认为会出现外键约束错误。在使用MyISAM时没有遇到这个问题。

是否有一种简单的方法来强制截断所有表?或者我应该编写一个脚本来删除数据库,创建新的数据库然后从头开始创建表格?

2个回答

58

关于外键约束,你可以使用以下语句来禁用它们 -

SET FOREIGN_KEY_CHECKS = 0;
...DML statements
SET FOREIGN_KEY_CHECKS = 1; -- enable checking

4
不要这样做,因为你会遇到外键约束错误。改用 DELETE FROM table。它不会像外键那样级联删除其他表中找到的每条记录。 - machineaddict

8

如果在操作过程中出现外键问题,您可以采取以下措施:

ALTER TABLE tablename DISABLE KEYS

然后进行您的业务,之后使用以下命令重新启用密钥:

ALTER TABLE tablename ENABLE KEYS

这种技术在MySQL备份中被使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接