MySql:如何清空数据库

所以,直到今天我们正在testing我们的网站。 现在我们要切换到下一个级别,我们需要清空数据库才能做到这一点。 这意味着我们希望成为起点,所有的表格都没有数据。

有很多表和交叉引用,所以也许截断表是不是最好的select..

谷歌和问朋友,我想我知道正确的解决scheme与模式(更准确地说是导出一个模式)有关。这是适合我们的情况吗? 如果是,哪些是执行此清洁的必要步骤?

Debian和MySQL 5.1

你应该可以用mysqldump来做到这一点

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

那么你可以使用mysql来清理数据库

 mysql -u root -p dbname < schema.sql 

默认是这样的,schema.sql文件将包含必要的命令来做你想做的事情。

如果你想testing这个,你可以做类似的事情

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

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

关于使用外键关系截断表,只要尝试禁用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;