Как я могу удалить содержание всех таблиц в моей базе данных в phpMyAdmin, не отбрасывая базу данных?

Как я могу освободить содержание всех таблиц в моей базе данных в phpMyAdmin, не отбрасывая ни одной из таблиц в базе данных?

Так как я делаю это несколько раз в час, в то время как в разработке, я весьма отдельным образом нажал бы "Empty" на все 60 +, представляет в виде таблицы каждый раз.

13
задан Ivan Beldad 24 April 2018 в 08:06
поделиться

4 ответа

Создайте SQL-скрипт с несколькими операторами DELETE (по одному для каждой таблицы) и выполните его.

Зайдите в phpMyAdmin и выберите нужную вам базу данных. Выберите вкладку SQL и вставьте SQL-скрипт в окно. Нажмите Go.

Посмотрите также здесь:

Удаление всех таблиц из базы данных MySQL без удаления

7
ответ дан 1 December 2019 в 18:06
поделиться

вы можете начать с этого запроса

SELECT T.*
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE'

И перебирать эти результаты, чтобы построить динамическую строку SQL с настройкой 'DELETE FROM' + T.Table_Name

3
ответ дан 1 December 2019 в 18:06
поделиться

К сожалению, не существует TRUNCATE DATABASE или эквивалента. Учитывая это, вы, вероятно, могли бы использовать какую-то хранимую процедуру, которая проходит через все таблицы в вашей базе данных и усекает их. Я нашел что-то подобное здесь, но я не знаю, работает ли это. (Возможно, вам стоит прочитать и обсуждение в комментариях)

2
ответ дан 1 December 2019 в 18:06
поделиться
drop procedure if exists truncate_tables;

delimiter #
create procedure truncate_tables()
begin
 declare tab_name varchar(64);
 declare done tinyint unsigned default 0;

 declare table_cur cursor for select t.table_name
 from 
  information_schema.schemata s
  inner join information_schema.tables t on s.schema_name = t.table_schema
 where
   s.schema_name = database() and t.table_type = 'BASE TABLE';

 declare continue handler for not found set done = 1;

 open table_cur;
 repeat
   fetch table_cur into tab_name;
   set @cmd = concat('truncate table ', tab_name);

   prepare stmt from @cmd;
   execute stmt;
 until done end repeat;

 close table_cur;
end #
1
ответ дан 1 December 2019 в 18:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: