У меня после переноса файла \перенести 20100905201547_create_blocks\дБ.РБ
Как я могу конкретно откат, что миграция файл?
rake db:rollback STEP=1
Это способ сделать это, если миграция вы хотите отката последнего применения. Вы можете заменить 1 для однако многих миграций вы хотите вернуться.
Например:
rake db:rollback STEP=5
Также откатить все миграции, что произошло позже (4, 3, 2 и 1).
Откат всех миграций обратно до (и включая) целевой миграции, использовать: (это исправленный команда была добавлена после того, как все замечания, указывающие на ошибки в исходном посте)
rake db:migrate VERSION=20100905201547
Для того, чтобы откатить только одну конкретную миграции (вышел из строя) использовать:
rake db:migrate:down VERSION=20100905201547
Обратите внимание, что это не будет отката любых предстоящих миграций -- только один. Если это не то, что вы задумали, вы можете смело запускать `грабли дБ:мигрировать и он будет повторно запускать только тот, пропуская любые другие, которые ранее не были откачены.
rake db:migrate:down VERSION=20100905201547
будет откат конкретный файл.
Чтобы найти версии всех миграций, вы можете использовать эту команду:
rake db:migrate:status
Или, просто префикс миграции'ы имя файла версия нужно откатить.
Смотрите Рубин на направляющие запись на кочевки.
Для отката последней миграции вы можете сделать:
rake db:rollback
Если вы хотите откатить конкретные миграции с версии, вы должны сделать:
rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION
Например, если версия 20141201122027, вы будете делать:
rake db:migrate:down VERSION=20141201122027
откатить этой конкретной миграции.
Вы можете откатить миграцию с помощью `грабли дБ:откат с различными вариантами. Синтаксис будет отличаться в соответствии с вашими требованиями.
Если вы хотите отката только за последние миграции, то вы можете использовать либо
rake db:rollback
или
rake db:rollback STEP=1
Если вы хотите отката число миграций сразу, то вы просто передаете аргумент:
rake db:rollback STEP=n
где N-это количество миграций на откат, считая от последней миграции.
Если вы хотите отката к определенной миграции, то вы должны пройти вариант миграции в следующем:
rake db:migrate:down VERSION=xxxxx
где ХХХХХ-номер версии миграции.
грабли дБ:миграция:версии=your_migrations's_version_number_here
Версия числовой префикс на миграции'файл с именем
Как найти версию:
Миграции файлы хранятся в каталоге rails_root/дБ/миграция`. Найти нужный файл, на которую вы хотите откатить и скопировать префикса.
например
имя файла: 20140208031131_create_roles.РБ
тогда версия 20140208031131
Откат последней миграции:
# rails < 5.0
rake db:rollback
# rails >= 5.0
rake db:rollback
# or
rails db:rollback
Откат последних N-количество миграций
# rails < 5.0
rake db:rollback STEP=2
# rails >= 5.0
rake db:rollback STEP=2
# or
rails db:rollback STEP=2
Откат определенной миграции
# rails < 5.0
rake db:migrate:down VERSION=20100905201547
# rails >= 5.0
rake db:migrate:down VERSION=20100905201547
# or
rails db:migrate:down VERSION=20100905201547
Для отката последней миграции вы можете сделать:
rake db:rollback
Если вы хотите откатить конкретные миграции с версии, вы должны сделать:
rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION
Если миграция файл, который вы хотите откатить назывался дБ/перенести/20141201122027_create_some_table.РБ, то версия, что миграция
20141201122027, это время, что миграция была создана, и команду для отката, что миграция будет:
rake db:migrate:down VERSION=20141201122027
Если это обратимая миграция и последний, который был казнен, а затем запустить грабли дБ:откат
. И вы всегда можете использовать версию.
е.г
перенос файла 20140716084539_create_customer_stats.РБ,поэтому команда откат будет,
грабли дБ:миграция:версии=20140716084539
От Guide рельсы
Вы можете использовать активную запись'с возможностью отката миграций с помощью вернуться
метод:
require_relative '20100905201547_create_blocks'
class FixupCreateBlock < ActiveRecord::Migration
def change
revert CreateBlock
create_table(:apples) do |t|
t.string :variety
end
end
end
Метод вернуться
также принимает блок инструкции к обратному. Это может быть полезно изменить некоторые части предыдущих миграций. Например, пусть'ы представляю, что CreateBlock которые и позже решили, что будет лучше использовать активную запись проверки, в месте ограничение Check, чтобы проверить адрес.
class DontUseConstraintForZipcodeValidationMigration < ActiveRecord::Migration
def change
revert do
# copy-pasted code from CreateBlock
reversible do |dir|
dir.up do
# add a CHECK constraint
execute <<-SQL
ALTER TABLE distributors
ADD CONSTRAINT zipchk
CHECK (char_length(zipcode) = 5);
SQL
end
dir.down do
execute <<-SQL
ALTER TABLE distributors
DROP CONSTRAINT zipchk
SQL
end
end
# The rest of the migration was ok
end
end
end
Та же миграция могла бы быть написана без использования вернуться, но это потребовало еще несколько шагов: изменение порядка create_table и обратимым, замена create_table на выполняться инструкция drop_table, и, наконец, заменив вверх вниз и наоборот. Это все заботятся вернуться.
Изменение миграций состояния базы данных с помощью команды
$ bundle exec rake db:migrate
Мы можем отменить один шаг миграции через
$ bundle exec rake db:rollback
Чтобы пройти весь путь обратно к началу, мы можем использовать
$ bundle exec rake db:migrate VERSION=0
Как вы уже могли догадаться, заменяя любое другое число на 0 мигрирует в той версии, где в качестве номера версии приходят из листинга миграции последовательно
Откатить всех миграций до определенной версии (например, 20181002222222
), используйте:
rake db:migrate VERSION=20181002222222
(Обратите внимание, что это использует дБ:мигрировать
- не дБ:миграция:вниз
, как и в других ответов на этот вопрос.)
Предполагая, что указанная миграция версия старее, чем текущая версия, это откат всех миграций до, но не включая указанную версию.
Например, если `грабли дБ:миграция:состояние первоначально отображает:
(... some older migrations ...)
up 20181001002039 Some migration description
up 20181002222222 Some migration description
up 20181003171932 Some migration description
up 20181004211151 Some migration description
up 20181005151403 Some migration description
Работа:
rake db:migrate VERSION=20181002222222
В результате:
(... some older migrations ...)
up 20181001002039 Some migration description
up 20181002222222 Some migration description
down 20181003171932 Some migration description
down 20181004211151 Some migration description
down 20181005151403 Some migration description
Ссылка: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
Ну в Rails 5, он'ы довольно легко грабли дБ:миграция:состояние или рельсы дБ:миграция:состояние
Она была модифицирована, чтобы обрабатывать оба одинаково Затем просто выбрать, какую версию вы хотите откатить а потом запустить грабли дБ:мигрировать версии=2013424230423
Убедитесь, что версия все заглавными буквами
Если у вас есть проблемы с любым шагом миграции или застрял в середине, просто зайдите в миграционную файл и закомментируйте строки, которые уже были перенесены.
Надеюсь, что помогает