У меня есть ошибка в «self.drop» в миграции, так что я не могу откатиться от этой миграции. как я могу начать с нуля и строить из миграции 001? Кроме того, есть ли способ сделать это без потери своих данных (это только тестирование, но все же ...)Как избежать ошибочной миграции отката в рубине?
ответ
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
Если у Вас есть ошибка в миграции вы можете изменить его, а затем попытаться откатить.
Вы можете прокомментировать все утверждения в процессе миграции self.down и откат к предыдущей версии db.
Затем примените изменения вручную с помощью клиента gui/web db для сопоставления схемы db перед переносом.
После того, как вы снова сможете выполнить миграцию, и ваши данные не будут потеряны.
Я понимаю, что это старый вопрос, но имхо все еще актуально. Если вы хотите восстановить вашу базу данных с нуля, один не откатить и перезапуск миграции, один раз делает
rake db:setup
Это падение, создать и заполнить базу данных с текущим Совокупным состоянием всех миграций. Это связано с тем, что определенно в большой системе все запущенные миграции могут перестать работать. Однако работа schema.rb
всегда будет работать.
Моей рекомендацией было бы также избегать отката миграции в максимально возможной степени, если только вы только что создали миграцию и не захотите сделать некоторое дополнение/опечатку/исправление, прежде чем перенаправить перенос в свою команду или любое развертывание.
Это зависит от того, как вы изменили базу данных в этой миграции. Добавлено что-то? Удалено что-то? Можете ли вы предоставить дополнительную информацию? –