Есть ли хороший простой способ удалить все таблицы из базы данных MySQL, игнорируя любые ограничения внешнего ключа, которые могут быть там?
mysql
foreign-keys
innodb
sql-drop
bcmcfc
источник
источник
Drop
из выпадающего меню, вы можете снятьForeign key check
флажок.Ответы:
Я нашел сгенерированный набор операторов drop полезным и рекомендую следующие настройки:
Примечание 1: Это не выполняет операторы DROP, а просто дает вам их список. Вам нужно будет вырезать и вставить вывод в ваш движок SQL, чтобы выполнить их.
Примечание 2: Если у вас есть VIEW, вам придется корректировать каждый
DROP TABLE `VIEW_NAME`
операторDROP VIEW `VIEW_NAME`
вручную.Поэтому, чтобы операторы drop работали, если вам нужно:
Это отключит проверку ссылочной целостности - поэтому, когда вы закончите выполнять необходимые отбрасывания, вы захотите сбросить проверку ключа с помощью
NB: чтобы легче использовать вывод SELECT, может помочь опция mysql -B.
источник
DROP DATABASE foo; CREATE DATABASE foo;
, это не совсем то же самое, но сработало для меня.С http://www.devdaily.com/blog/post/mysql/drop-mysql-tables-in-any-order-foreign-keys :
(Обратите внимание, что это ответ на вопрос о том, как отключить проверку внешнего ключа, чтобы иметь возможность отбрасывать таблицы в произвольном порядке. Он не отвечает, как автоматически генерировать операторы отбрасываемых таблиц для всех существующих таблиц и выполнять их в одном сценарии. Ответ Жана делает.)
источник
Вот хранимая процедура SurlyDre, измененная так, что внешние ключи игнорируются:
источник
_tableName
в кавычки. В противном случае произойдет сбой в некоторых таблицах, таких какgroup
или другие ключевые слова.каждый вышеперечисленный подход включает в себя гораздо больше работы, чем этот AFAICT ...
источник
mysqldump
чтобыmysql
, минуя файл?mysqldump
вgrep
INTOmysql
, он работает. Еще раз спасибо за ваше решение, это хорошо.Из этого ответа ,
выполнить:
Это удаляет таблицы из базы данных, используемой в настоящее время. Вы можете установить текущую базу данных, используя
use
.В противном случае принятый ответ Дион проще, за исключением того, что вам нужно выполнить его дважды, сначала для получения запроса, а затем для выполнения запроса. Я предоставил несколько глупых обратных галочек для экранирования специальных символов в именах БД и таблиц.
источник
Вот решение на основе курсора. Вроде долго, но работает как один пакет SQL:
источник
Ты можешь сделать:
Затем запустите сгенерированные запросы. Они будут отбрасывать каждую таблицу в текущей базе данных.
Вот некоторая помощь по
drop table
команде.источник
||
установлен оператор конкатенации. В частности, режим SQL MySQL содержитPIPES_AS_CONCAT
. Ссылка: dev.mysql.com/doc/refman/5.0/en/…concat
вместо||
Я придумал эту модификацию в ответе Дион Трутер, чтобы упростить многие таблицы:
Это возвращает всю вещь в одном поле, так что вы можете скопировать один раз и удалить все таблицы (используйте
Copy Field Content (unquoted)
в Workbench). Если у вас много таблиц, вы можете использовать некоторые ограниченияGROUP_CONCAT()
. Если это так, увеличьте переменную max len (иmax_allowed_packet
, если необходимо).источник
Один вкладыш для удаления всех таблиц из данной базы данных:
Выполнение этого удалит все таблицы из базы данных DATABASE_NAME.
И хорошо то, что имя базы данных пишется только один раз.
источник
Поиск в теме по теме всегда приводит меня к такому вопросу, поэтому здесь работает код mysql, который удаляет ОБА таблицы и представления:
источник
Вот автоматический способ сделать это с помощью bash-скрипта:
источник
Если в Linux (или любой другой системе, которая поддерживает piping, echo и grep), вы можете сделать это одной строкой:
Я знаю, что это старый вопрос, но я думаю, что этот метод быстрый и простой.
источник
В php это так же просто, как:
Просто не забудьте изменить YOURDB на имя вашей базы данных, и, очевидно, на пользователя / пароль.
источник
В оболочке Linux, такой как bash / zsh:
Это сгенерирует команды, а затем сразу же направит их ко второму клиентскому экземпляру, который удалит таблицы.
Умный бит, конечно, скопирован из других ответов здесь - я просто хотел, чтобы текст с копией и вставкой в одну строку (ish) действительно выполнял работу, которую хотел OP.
Обратите внимание, что вы, конечно, должны будете ввести свои учетные данные (дважды) в эти команды mysql, если только у вас не очень низкий уровень безопасности. (или вы можете использовать псевдоним вашей команды mysql, чтобы включить ваши кредиты.)
источник
Просто поместите здесь несколько полезных комментариев Джонатана Уотта, чтобы убрать все таблицы
Это помогает мне, и я надеюсь, что это может быть полезно
источник
Удалите все таблицы из базы данных одной строкой из командной строки:
Где [имя_пользователя], [пароль], [имя_хоста] и [имя_базы_данных] должны быть заменены реальными данными (пользователь, пароль, имя хоста, имя базы данных).
источник
Это довольно старый пост, но ни один из ответов здесь, на мой взгляд, действительно не ответил на вопрос, поэтому я надеюсь, что мой пост поможет людям!
Я нашел это решение по другому вопросу, который мне очень подходит:
Это фактически опустошит все ваши таблицы в базе данных
DB_NAME
, а не только отобразитTRUNCATE
командную строку.Надеюсь это поможет!
источник
Основываясь на ответе @Dion Truter и @Wade Williams, следующий скрипт оболочки удалит все таблицы после того, как сначала покажет, что он собирается запустить, и даст вам возможность прервать работу с помощью Ctrl-C.
источник
Это решение основано на ответе @SkyLeach, но с поддержкой удаления таблиц с внешними ключами.
источник
источник
Просто и понятно (может быть).
Не может быть причудливым решением, но это сработало и спасло мой день.
Работал для версии сервера: 5.6.38 MySQL Community Server (GPL)
Шаги, за которыми я следовал:
Оболочка MySQL
источник
Я использую следующее с сервером MSSQL:
Замените YOUR_DATABASE именем вашей базы данных или удалите весь оператор IF (мне нравится дополнительная безопасность).
источник
Лучшее решение для меня до сих пор
Выберите База данных -> Правой кнопкой мыши -> Задачи -> Создать сценарии - откроется мастер для создания сценариев. После выбора объектов в настройках сценариев нажмите кнопку « Дополнительно» . Под "Script DROP and CREATE" выберите Script DROP .
Запустить скрипт.
источник