Rake db: migrate - как мне отменить все миграции и переделать их

Есть ли команда быстрого рейка db: rollback для всех перемещений?

28
24 апр. '13 в 15:16
источник поделиться
3 ответов

В то время как ответ @Orlandos правильный, rake db:reset не переделывает все миграции и, по его словам, загружает данные из последней схемы. Если вы хотите отменить все миграции и затем переделать их, вы должны использовать:

rake db:migrate:reset #runs db:drop db:create db:migrate

Вы можете увидеть дополнительную информацию в этом сообщении: Разница между rake db: migrate db: reset и db: schema: load

107
24 апр. '13 в 15:46
источник

просто используйте rake db:reset, который потеряет вашу базу данных (такую ​​же, как отмена всех миграций) и reset до последней схемы.

UPDATE: более правильный подход будет использовать rake db:migrate:reset. Это приведет к сбросу базы данных, ее созданию снова и запустит все миграции, вместо того, чтобы вернуться к последней схеме.

14
24 апр. '13 в 15:25
источник

Если вы действительно хотите отменить все миграции, а не просто перевести базу данных в нетронутое состояние или в последнюю схему, вам нужно запустить:

rake db:migrate VERSION=0

Это приведет к откату на всех этапах миграции и гарантирует, что каждая миграция будет обратимой.

Если вы сейчас выпускаете

rake db:migrate:status

вы увидите, что все миграции все еще существуют, но они находятся в состоянии "вниз" (не применяется).

Другие команды, которые подразумевают rake db:reset или rake db:drop (например, в ответах @Orlando или @Alex Falke), вообще не будут откатываться: то есть они не будут гарантировать, что каждая миграция обратимым.

Кроме того, rake db:drop не может быть запущен во время доступа к базе данных другими пользователями, в то время как откаты могут выполняться в реальном времени (даже если это обычно не рекомендуется). И последнее, но не менее важное: простое удаление и повторное создание базы данных также удалит таблицу миграции схем: если кто-то запускает rake db:migrate:status после того, как база данных была удалена, ему ответят, что "таблица миграции схемы еще не существует" и будет иметь никакие подсказки о том, какие миграции могут быть применены (если он еще не знает об этом или не может их перечислить).

13
27 авг. '15 в 18:01
источник

Посмотрите другие вопросы по меткам или Задайте вопрос