27

Обычно я открываю Terminal.app и подключаюсь к удаленной базе данных MySQL.

Затем я использую эту команду, чтобы удалить таблицу:

mysql> drop table [table name];

Но мне нужна командная строка для удаления всех таблиц в базе данных.

Если я использую:

mysql> drop database [database name];

Я полностью уничтожу базу данных и больше не смогу создавать таблицы. Я прав?

3 ответа3

26

Вы можете удалить базу данных и сразу же восстановить ее:

mysql> drop database [database name];
mysql> create database [database name];

Или вы можете использовать скрипт для удаления каждой таблицы в базе данных.

10

Вы можете попробовать следующую команду:

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME

Или же:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME

Где DB_NAME - это имя вашей базы данных. Учетные данные базы данных можно указать либо в ~/.my.cnf либо добавив их в команду (например, -uroot -proot).

Этот метод имеет некоторые преимущества по сравнению с удалением и созданием базы данных в случае, если у пользователя базы данных нет разрешения на ее удаление.

2

mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE % ;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .