MySql:如何清空数据库

MySql:如何清空数据库

所以,直到今天我们还在测试我们的网站。现在我们想切换到下一个级别,我们需要清空数据库才能做到这一点。这意味着我们希望回到起点,拥有所有表格,但没有数据。

有很多表格和交叉引用,因此逐表截断可能不是最好的选择。

通过谷歌搜索和询问朋友,我猜想正确的解决方案与架构有关(更准确地说是导出架构)。这是否适合我们的情况?如果是,执行此清理的必要步骤是什么?

Debian 和 mysql 5.1

答案1

你应该能够做到这一点mysqldump

mysqldump -u root -p --no-data dbname > schema.sql

然后你可以使用 mysql 清理数据库

mysql -u root -p dbname < schema.sql

默认情况下,schema.sql 文件将包含执行所需操作所需的必要命令。

如果你想测试一下,你可以这样做

mysql -u root -p -e 'create database test;'
mysql -u root -p test < schema.sql

然后检查测试数据库是否具有您期望的结构等。

答案2

关于截断具有外键关系的表,只需尝试禁用 DDL 来检查这一点,如StackOverflow.com 上的这个答案(连接参数):

SET FOREIGN_KEY_CHECKS=0;

然后将其与此查询结合起来生成查询列表,以使其截断所有表。

SELECT
    CONCAT('TRUNCATE TABLE ', table_schema, '.', table_name, ' ;')
FROM
    information_schema.tables
WHERE
    table_schema = 'name_of_your_db' 
ORDER BY
    table_name DESC;

相关内容