参考文档:
https://blog.csdn.net/iw1210/article/details/79586033
https://www.cnblogs.com/hougang/p/mysql_truncate.html
MySQL 用 truncate 命令快速清空一个数据库中的所有表。
1. 先执行select语句生成所有truncate语句
语句格式:
select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema in ('数据库1','数据库2');
以名为dbname的数据库为例,执行select语句:
mysql> select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema in ('dbname');
+------------------------------------------------------------+
| CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') |
+------------------------------------------------------------+
| truncate TABLE dbname.ABOUTUSINFO; |
| truncate TABLE dbname.ABUTMENT; |
| truncate TABLE dbname.ABUTMENTFILE; |
| truncate TABLE dbname.ACHVORG; |
| truncate TABLE dbname.WORKFLOWNODE; |
| truncate TABLE dbname.ZONESERVICE; |
| truncate TABLE dbname.ZONESERVICEFILE; |
+------------------------------------------------------------+
7 rows in set
mysql>
2. 把每条truncate语句前后的“|”替换为空字符
用文本编辑器(如 Notepad++)把每条truncate语句前后的“|”替换为空字符,方便后面一次复制多条执行。
替换前:
替换后:
3. 复制truncate语句到mysql命令行执行
复制truncate语句到mysql命令行执行,可以一次复制多条执行。
mysql> truncate TABLE dbname.ZONESERVICE;
Query OK, 0 rows affected
mysql>
这样就清空数据库中所有表啦,简单吧~
执行报错了,提示外键约束的表不能删除
1701 - Cannot truncate a table referenced in a foreign key constraint (`db_activiti`.`act_ru_variable`, CONSTRAINT `ACT_FK_VAR_BYTEARRAY`)
1701 - Cannot truncate a table referenced in a foreign key constraint (`db_activiti`.`act_id_membership`, CONSTRAINT `ACT_FK_MEMB_GROUP`)
解决办法,参考了第二个文档:
一、为什么要使用truncate
使用truncate截断表速度快,不仅可以清空表数据,而且可以使自增列重新从1开始
二、出现错误的原因
Mysql中如果表和表之间建立了外键约束,则无法删除表及修改表结构
三、解决方案
其他没使用的参考文档,但提供了一下思路: