2013-06-07 2 views
5

Я только что установил программу, поэтому в таблице не было никаких данных, кроме одного пользователя (меня).Как выполнить миграцию снова, не удаляя все новые миграции?

Я снова переделывал базу данных, поэтому я бросил все это. Я сделал rails g scaffold для создания 6 новых моделей и контроллеров и сделал rake db:migrate

В моей /db/migrate директории у меня есть файл DEViSE с именем файла 20130603211907_devise_create_users.rb

Вот вопрос: Если я rake db:migrate:down VERSION=20130603211907 будут удалены все новые миграции ,

Как выполнить миграцию снова, не удаляя все новые миграции?

+0

Я собираюсь попробовать «rake db: migrate» после изменения отметки времени при переносе и посмотреть, что произойдет. – Kush

ответ

6

Если вы разрабатываете на местном уровне, и это не мешало бы, чтобы удалить все данные из моделей, которые вы могли бы просто drop ваш дб, а затем create & migrate с нуля:

Purge or recreate a Ruby on Rails database

20

rake db:migrate:redo VERSION=xxxxxxx

Он будет работать вниз и затем вверх шаг. Вы можете сделать это в сочетании с комментированием нижнего шага временно.

+4

Чтобы получить список версий, выполните следующие действия: 'rake db: migrate: status'. – Adobe

5

Спасибо за помощь всем. Это то, что сработало для меня:

ВНИМАНИЕ: эти команды удалят все данные в вашей базе данных!

rake db:drop 
rake db:create 
rake db:migrate 
+3

подумайте о том, чтобы принять ответ, который сработал для вас, а не включать решение во второй раз в ваш собственный ответ;) –

+1

haha ​​будет делать :) – Kush

0

Вы можете позвонить rake db:migrate:redo VERSION=20130603211907, который будет повторно указанную версию.

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

def up 
    do_something 
end 

и четкость вниз (спускаясь) , def change (в обоих направлениях) соответственно.

Чтобы временно отключить миграцию, просто переименуйте метод def up в def up_ и он будет игнорироваться при обработке цепочки миграции.

Смежные вопросы