Можно ли очистить всю базу данных, подключившись к ней с помощью PHP и предоставив команду?
Самый простой способ сделать это, если у вас есть привилегии, это:
DROP DATABASE dbName; CREATE DATABASE dbName; ИСПОЛЬЗОВАНИЕ DATABASE dbName;
Альтернативой является запрос базы данных information_schema
для триггеров, хранимых процедур (процедур и функций), таблиц, представлений и, возможно, что-то еще, и их индивидуального удаления.
Даже после этого ваша база данных может все еще находиться не в том же состоянии, что и вновь созданная, поскольку она может иметь настраиваемый набор символов и набор настроек. Используйте ALTER DATABASE
чтобы изменить это.
По мере добавления функций (событий …) у вас будет все больше и больше работы. Таким образом, единственный способ полностью очистить базу данных – это удалить ее и заново создать.
Вы можете получить имена таблиц с помощью
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db'
И сделайте усечение,
даже, вы можете сделать
SELECT 'TRUNCATE TABLE ' + table_name + ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db'
И затем повторите набор результатов, выполняющий строковый запрос для каждой записи.
Вы можете получить список всех таблиц в базе данных ( $databaseName
), просмотреть их все и применить TRUNCATE TABLE
к каждому.
$result = mysqli_query($link, "SHOW TABLES IN `$databaseName`"); while ($table = mysqli_fetch_array($result)) { $tableName = $table[0]; mysqli_query($link, "TRUNCATE TABLE `$databaseName`.`$tableName`"); if (mysqli_errno($link)) echo mysqli_errno($link) . ' ' . mysqli_error($link); else echo "$tableName was cleared<br>"; }
Это очищает содержимое всех таблиц в базе данных, сохраняя структуру.
Да. В принципе, вам нужно получить список всех таблиц в базе данных, затем перебрать этот список и выдать имя таблицы TRUNCATE TABLE $tablename
для каждой записи.
Это выглядит довольно прилично: усечь все таблицы в базе данных MySQL
Это сработало для меня.
mysql -u < DB-USER > -p<DB-PASS> --silent --skip-column-names -e "SHOW TABLES" <DB-NAME> | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -u < DB-USER > -p< DB-PASS > -v < DB-NAME >