как избежать ошибочного отката миграции в ruby? - PullRequest
1 голос
/ 17 июня 2009

У меня есть ошибка в "self.drop" в миграции, так что я не могу откатиться после этой миграции. Как я могу начать с нуля и собрать с миграции 001? Кроме того, есть ли способ сделать это без потери моих данных (это просто тестирование, но все же ...)

Ответы [ 3 ]

1 голос
/ 18 июня 2009

Вы можете комментировать все операторы в процессе самостоятельной миграции и отката к предыдущей версии БД.

Затем примените изменения вручную, используя клиент GUI / Web DB, чтобы соответствовать схеме DB перед миграцией.

После того, как вы сможете снова запустить миграцию и ваши данные не будут потеряны.

1 голос
/ 18 июня 2009
rake db:drop
rake db:create
rake db:migrate

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

rake db:data:dump  # stores all data in db/data.yml
...
rake db:data:load  # loads db/data.yml to database

Если у вас возникла ошибка в миграции, вы можете отредактировать ее, а затем попытаться выполнить откат.

0 голосов
/ 09 мая 2014

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

rake db:setup

Это приведет к удалению, созданию и заполнению базы данных текущим объединенным состоянием всех миграций. Это потому, что, безусловно, в большой системе выполнение всех миграций может больше не работать. Однако запуск schema.rb всегда будет работать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...