2009-06-17 5 views
1

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

+0

Это зависит от того, как вы изменили базу данных в этой миграции. Добавлено что-то? Удалено что-то? Можете ли вы предоставить дополнительную информацию? –

ответ

1
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 

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

1

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

Затем примените изменения вручную с помощью клиента gui/web db для сопоставления схемы db перед переносом.

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

0

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

rake db:setup 

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

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