zoukankan      html  css  js  c++  java
  • 学习activiti的时候使用truncate命令清空表

    参考文档:

    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中如果表和表之间建立了外键约束,则无法删除表及修改表结构

    三、解决方案

    在Mysql中取消外键约束:  SET FOREIGN_KEY_CHECKS=0;  
     
    执行 truncate tablename
     
    然后再设置外键约束: SET FOREIGN_KEY_CHECKS=1;  

    其他没使用的参考文档,但提供了一下思路:

    https://www.cnblogs.com/wusir/p/3631647.html

  • 相关阅读:
    C#中异步和多线程的区别
    猫 老鼠 人的编程题
    C#中数组、ArrayList和List三者的区别
    经典.net面试题目
    sql有几种删除表数据的方式
    内存池的实现
    A*算法为什么是最优的
    传教士与野人问题
    d3d导致cairo不正常
    c++中的signal机制
  • 原文地址:https://www.cnblogs.com/mkl34367803/p/11570044.html
Copyright © 2011-2022 走看看