Ruby on Rails的:我怎样才能恢复与耙分贝迁移:迁移?

问题描述 投票:86回答:8

安装色器件模型用户后,我得到了这一点。

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

现在,如果我这样做耙分贝:迁移用户表将被创建。

我怎样才能恢复这种迁移,即我怎么能再次使用耙子删除用户表?

ruby-on-rails ruby-on-rails-3.1 migration rake database-migration
8个回答
141
投票

运行以下命令

rake db:migrate:down VERSION=<version>

其中<version>是要恢复迁移文件的版本号。

例如。如果要恢复与文件名3846656238_create_users.rb迁移

耙分贝:迁移:缩小版本= 3846656238


110
投票

只要运行这个命令:

rake db:rollback

63
投票

我相信,有可用于恢复移民(他们也重叠)三个选项:

  1. 摇下最近的迁移: 只有rake db:migrate:down#导轨2。
  2. 滚下来近期迁移的数量(n): rake db:rollback STEP=n
  3. 滚下来到以前特定版本: $ rake db:migrate:down VERSION=nnn#导轨3(提供版本号也)。

版本号是指SHA(安全散列算法)的承诺这是一个长的十六进制数它看起来像886af3194768917c78e ...你可以做git log看到它

您可以通过使用rake -T db:这对于轨道3.2包括查看这些命令(及其他)及其说明:

rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status  # Display status of migrations
rake db:rollback        # Rolls the schema back to the previous version (specify steps w/ STEP=n)

14
投票

你可以做回退,并指定有多少最后迁移将rollbacked,例如

rake db:rollback STEP=3

3个最后迁移。


10
投票
rake db:migrate:redo

这将撤消并重新应用上次迁移。


10
投票

作为一个新的程序员(或者其他新的程序员)

rake db:rollback工作半年左右的时间。我从那里开始。

如果不是,rake db:migrate:down VERSION=3846656238

插上版本要恢复迁移文件的版本号。


5
投票

对于轨道5我们可以使用rails command instead of rake

rails db:migrate:down VERSION=<version>

导轨分贝:迁移:下来VERSION = 20170330090327


2
投票

在你的终端运行以下命令:

rake db:migrate:status

要么

bundle exec rake db:migrate:status

它显示了状态,迁移的ID,迁移名称,我们以前遇到的所有迁移。选择您的迁移ID(即您的版本号),并将该ID版本后以下命令= ,,,然后按回车

bundle exec rake db:migrate:down VERSION=

0
投票

How to Roll back a migration

(1) First Identify The Migration ID

rake db:migrate:status

  • 复制的ID号。

Identify the migration to roll back.

(2) Then Roll back the migration

rake db:migrate:down VERSION=20190802023239

  • 粘贴上面的相关的ID号。当然,你的情况,迁移ID将是不同的!使用正确的迁移ID。

.......现在你去比赛!

© www.soinside.com 2019 - 2024. All rights reserved.