Как удалить все таблицы MySQL из командной строки без разрешений базы данных DROP?

Как удалить все таблицы в Windows MySQL с помощью командной строки? Причина, по которой я хочу сделать это, заключается в том, что у нашего пользователя есть доступ к базе данных, но нет доступа к повторной разработке самой базы данных, поэтому мы должны вручную отбрасывать таблицы. Есть ли способ сразу удалить все таблицы? Имейте в виду, что большинство таблиц связаны с внешними ключами, поэтому их нужно будет отбросить в определенном порядке.

5 Solutions collect form web for “Как удалить все таблицы MySQL из командной строки без разрешений базы данных DROP?”

Вы можете сгенерировать оператор следующим образом: DROP TABLE t1, t2, t3, ... и затем использовать подготовленные операторы для его выполнения:

 SET FOREIGN_KEY_CHECKS = 0; SET @tables = NULL; SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'database_name'; -- specify DB name here. SET @tables = CONCAT('DROP TABLE ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET FOREIGN_KEY_CHECKS = 1; 

Версия @ Devart верна, но вот некоторые улучшения, чтобы избежать ошибки. Я отредактировал ответ @ Devart, но он не был принят.

 SET FOREIGN_KEY_CHECKS = 0; SET GROUP_CONCAT_MAX_LEN=32768; SET @tables = NULL; SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE()); SELECT IFNULL(@tables,'dummy') INTO @tables; SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET FOREIGN_KEY_CHECKS = 1; 

Этот сценарий не будет вызывать ошибки с результатом NULL в случае, если вы уже удалили все таблицы в базе данных, добавив хотя бы одну несуществующую таблицу «фиктивный».

И он исправляется в случае, если у вас много таблиц.

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

 SET FOREIGN_KEY_CHECKS = 0; SET GROUP_CONCAT_MAX_LEN=32768; SET @views = NULL; SELECT GROUP_CONCAT('`', TABLE_NAME, '`') INTO @views FROM information_schema.views WHERE table_schema = (SELECT DATABASE()); SELECT IFNULL(@views,'dummy') INTO @views; SET @views = CONCAT('DROP VIEW IF EXISTS ', @views); PREPARE stmt FROM @views; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET FOREIGN_KEY_CHECKS = 1; 

Предполагается, что вы запускаете скрипт из базы данных, которую хотите удалить. Или запустите это раньше:

 USE REPLACE_WITH_DATABASE_NAME_YOU_WANT_TO_DELETE; 

Спасибо Стиву Хорвату, чтобы открыть проблему с обратными шагами.

Попробуй это.

Это работает даже для таблиц с ограничениями (отношения внешних ключей). Кроме того, вы можете просто отказаться от базы данных и воссоздать, но у вас могут не быть необходимых разрешений.

 mysqldump -u[USERNAME] -p[PASSWORD] \ --add-drop-table --no-data [DATABASE] | \ grep -e '^DROP \| FOREIGN_KEY_CHECKS' | \ mysql -u[USERNAME] -p[PASSWORD] [DATABASE] 

Чтобы преодолеть эффекты проверки внешнего ключа, добавьте show table в конце сгенерированного скрипта и запустите много раз, пока команда show table приведет к пустующему набору.

Вы можете отбросить database а затем воссоздать ее с помощью: –

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

Принятый ответ не работает для баз данных с большим количеством таблиц, например баз данных Drupal. Вместо этого см. Скрипт здесь: https://stackoverflow.com/a/12917793/1507877, который работает в MySQL 5.5. ПРЕДУПРЕЖДЕНИЕ. Вокруг строки 11 есть «WHERE table_schema = SCHEMA ();» Вместо этого это должно быть «WHERE table_schema =» INSERT NAME OF DB, в котором ИМПОРТ ПРОИСХОДИТ »;

  • Как анализировать аргументы командной строки на C ++?
  • Бесполезное использование кошки?
  • MySQL: как экспортировать и импортировать файл .sql из командной строки?
  • Дамп базы данных mysql в резервную копию открытого текста (CSV) из командной строки
  • Тайм-аут команды в bash без лишней задержки
  • Как перебрать файлы, соответствующие шаблону в пакетном файле
  • Каков наилучший способ анализа аргументов командной строки?
  • Выполнить скрипт PowerShell из C # с аргументами командной строки
  • Как выполнить загрузку и загрузку FTP?
  • Как анализировать вывод командной строки из c #?
  • Как установить компоненты cygwin из командной строки?
  • Interesting Posts
    Давайте будем гением компьютера.