截断mysql数据库中的所有表
是否可以截断mysql数据库中的所有表?什么是该查询。不可能使用单个sql查询。您可以执行以下查询:截断mysql数据库中的所有表,mysql,Mysql,是否可以截断mysql数据库中的所有表?什么是该查询。不可能使用单个sql查询。您可以执行以下查询: select 'truncate table ' || table_name || ';' from INFORMATION_SCHEMA.TABLES; 然后将结果保存到脚本并运行它 另一种可能是, 运行查询 将结果复制到剪贴板(复制) 将结果粘贴到MySQL命令解释器中(粘贴) 完成了 如果您只是运行查询,您将理解我想说的内容。继续@Pablo pipes并不是为了我而连接的-我想将
select 'truncate table ' || table_name || ';'
from INFORMATION_SCHEMA.TABLES;
然后将结果保存到脚本并运行它
另一种可能是,
如果您只是运行查询,您将理解我想说的内容。继续@Pablo pipes并不是为了我而连接的-我想将它限制为单个数据库,然后仅限于表
SELECT CONCAT('truncate table ',table_name,';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '<<YOUR-DB-NAME>>'
AND TABLE_TYPE = 'BASE TABLE';
选择CONCAT('truncate table',table_name',;'))
来自信息\u SCHEMA.TABLES
其中表_SCHEMA=“”
表_TYPE='基表';
这里我给您留下一个存储过程,用于将数据库重置为cero
CREATE DEFINER=`root`@`localhost` PROCEDURE `reset_database`(DB_NAME VARCHAR(100))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tableName VARCHAR(100);
DECLARE cur CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_schema = DB_NAME AND table_type = 'BASE TABLE';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
SET FOREIGN_KEY_CHECKS = 0;
read_loop: LOOP
FETCH cur INTO tableName;
IF done THEN LEAVE read_loop; END IF;
SET @s = CONCAT('truncate table ',tableName);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END LOOP;
SET FOREIGN_KEY_CHECKS = 1;
CLOSE cur;
END;
只需选择所有表,然后选择“全部截断”
可能存在由于外键约束而导致截断失败的情况。如果您仍然希望强制截断,那么可以按照Cristiana Pereira的建议选择所有要截断的表 然后,单击“ReviewSQL”,而不是在下面的窗口中单击“Truncate”。遵循以下步骤
设置外键检查=1
很抱歉,我无法理解您的语句,请将结果保存到脚本并运行它。这可能是一件好事。可能与管道未连接的问题相同(MySQL 5.6.15)。这对我很有用,真的很有帮助。非常感谢你。我正在寻找这种类型的解决方案,它也是mysqlworkbench中的应用程序。这在我的机器上不起作用。“您的SQL语法有错误”