Можно ли очистить всю базу данных, подключившись к ней с помощью PHP и предоставив команду?
Пустая база данных в MySQL и PHP?
Ответ 1
Самый простой способ сделать это, если у вас есть привилегии, это:
DROP DATABASE dbName; CREATE DATABASE dbName; USE DATABASE dbName;
Альтернативой является запрос базы данных information_schema
для триггеров, хранимых процедур (процедур и функций), таблиц, представлений и, возможно, чего-то еще, и их отдельных.
Даже после этого ваша база данных может все еще находиться не в том же состоянии, что и вновь созданная, поскольку она может иметь настраиваемый набор символов и набор настроек. Используйте ALTER DATABASE
, чтобы изменить это.
По мере того, как функции продолжают добавляться (события...), вы будете работать все больше и больше. Таким образом, единственный способ полностью освободить базу данных - это удалить ее и заново создать.
Ответ 2
Вы можете получить имена таблиц с помощью
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db'
И сделайте truncate,
вы можете сделать
SELECT 'TRUNCATE TABLE ' + table_name + ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db'
И затем повторите набор результатов, выполняющий строковый запрос для каждой записи.
Ответ 3
Вы можете получить список всех таблиц в базе данных ($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>";
}
Это очищает содержимое всех таблиц в базе данных, сохраняя структуру.
Ответ 4
Да. В принципе, вам нужно получить список всех таблиц в базе данных, затем перебрать этот список и выдать TRUNCATE TABLE $tablename
для каждой записи.
Это выглядит довольно прилично: Обрезать все таблицы в базе данных MySQL
Ответ 5
Это сработало для меня.
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 >
Ответ 6
Да. Вы можете подключить базу данных и обрезать таблицу, назначив ее в качестве переменной.
$ conn = new mysqli ($ имя_сервера, $ username, $ password, $ dbname);
$ variableName = $conn-> query ($ que);
if ($conn-> connect_error) {
die ("Ошибка подключения:". $conn-> connect_error);
}
$ result = $conn-> query ('TRUNCATE TABLE yourtablename;');
if ($result) {
echo "Request ID table has been truncated";
}
else echo "Something went wrong: " . mysqli_error();
Ответ 7
<?php
$connection = new mysqli($host, $user, $pass, $db);
$sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '".$db."'";
$result = $connection->query($sql);
$tables = $result->fetch_all(MYSQLI_ASSOC);
foreach($tables as $table) {
$sql = "TRUNCATE TABLE '".$table['TABLE_NAME']."'";
$result = $connection->query($sql);
}
?>