Усечение всех таблиц (большинство из которых имеют ограничения). Как временно удалить их
У меня есть база данных разработки (MYSQL), которую я бы хотел загрузить со свежими данными в какой-то момент. Я хотел бы удалить содержимое всех таблиц.
Каким образом можно максимально автоматизировать удаление содержимого всех таблиц (включая те, которые имеют ограничения внешнего ключа). Есть ли усечение all/drop все эквивалентные ограничения?
Спасибо
Ответы
Ответ 1
Я думаю, вы можете сделать следующее:
-
Отключить проверку ограничения внешнего ключа
mysql> SET FOREIGN_KEY_CHECKS = 0;
-
Усечь ваши таблицы
mysql> TRUNCATE MY_TABLE;
-
Включить проверку ограничения внешнего ключа
mysql> SET FOREIGN_KEY_CHECKS = 1;
Я предпочитаю временно отключать ограничения внешнего ключа, чтобы отбросить/воссоздать их.
Ответ 2
Если вы хотите, чтобы урезать ДЕЙСТВИТЕЛЬНО все таблицы лучше, я думаю, что отбросьте и создайте базу данных с ранее извлеченной схемой базы данных. Или вы просто можете копировать одну и ту же базу данных - тест и пустой. После заполнения ваших таблиц просто удалите тестовый db и скопируйте пустой для проверки.
Ответ 3
TRUNCATE (TABLE) tbl_name усекает единую таблицу. Вы можете придерживаться этого в script и прокручивать его со всеми вашими именами таблиц.
http://dev.mysql.com/doc/refman/5.0/en/truncate.html
Возможно, вы захотите также изучить миграцию, но я думаю, что у Алексея есть правильный подход. Это очень похоже на то, как RoR обрабатывает перестройку тестовой базы данных при каждом запуске.
Ответ 4
Вот что я делаю из командной строки:
mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "SET FOREIGN_KEY_CHECKS = 0; TRUNCATE table $table" DATABASE_NAME; done
Проблема в том, что если вам требуется аутентификация, вам нужно будет добавить -u YOUR_USERNAME -pYOURPASSWORD
после обеих команд mysql
.
Если вы не хотите вводить пароль в командной строке (я никогда не был), вам нужно будет скопировать и вставить пароль после каждого приглашения, которое может быть несколько раз в зависимости от количества таблицы.