清空关系数据库模式

时间:2010-12-15 15:37:08

标签: mysql database

我有一个我备份的数据库。现在我试图删除原始数据库中的所有内容并将其恢复为空状态。因为它是关系数据库,所以它具有关键约束。我可以使用任何工具吗?

2 个答案:

答案 0 :(得分:7)

最简单的方法是禁用外键检查,然后截断表。由于禁用了外键,因此截断表的顺序无关紧要。

set foreign_key_checks = 0;
truncate table parent;
truncate table child;
truncate table ...

您甚至可以使用information_schema为您生成truncate table语句。像这样:

select concat('truncate table ',table_schema,'.',table_name,';') as sql_stmt
from information_schema.tables
where table_schema = 'your_schema_name'
and table_type = 'base table';

答案 1 :(得分:2)

您可以暂时删除或禁用所有约束,截断所有表,然后恢复约束。我已经为SQL Server采用了这种方法,它运行正常。

http://lists.mysql.com/mysql/194954

或许更好的方法是将模式转换为脚本(您置于版本控制之下),然后从头开始重新创建数据库。