truncate all table in mysql database
是否有可能截断mysql数据库中的所有表? 什么是查询。
继续从@Pablo管道没有为我连接 - 我想将它限制在一个数据库,然后只限制表
1 2 3 4 |
您可以执行以下查询:
然后将结果保存到脚本并运行它。
其他可能性可能是,
完成。
如果您只是运行查询,您将了解我想说的内容。
您只需选择所有表,然后选择截断所有表。
在这里,我给您留下一个存储过程,将您的数据库重置为cero
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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; |
使用单个SQL查询是不可能的。
可能存在由于外键约束而截断失败的情况。如果您仍想强制截断,那么您可以按照Cristiana Pereira的建议选择所有表格进行截断。
然后,单击"查看SQL",而不是单击以下窗口中的"截断"。跟着这些步骤
set foreign_key_checks = 0;
set foreign_key_checks = 1;