ruby-on-rails Ruby on Rails:如何使用rake db:migrate恢复迁移?

kjthegm6  于 2022-11-19  发布在  Ruby
关注(0)|答案(9)|浏览(170)

安装DEVICE MODEL用户后,我得到了这个。

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

现在,如果我执行rake db:migrate,将创建用户表。
如何恢复此迁移,即如何再次使用rake删除用户表?

3vpjnl9f

3vpjnl9f1#

运行以下命令

rake db:migrate:down VERSION=<version>

其中<version>是要还原的迁移文件的版本号。
例如,如果要还原文件名为3846656238_create_users.rb的迁移
rake数据库:迁移:关闭版本=3846656238

yr9zkbsy

yr9zkbsy2#

只需运行以下命令:

rake db:rollback
uttx8gqw

uttx8gqw3#

我认为有三个选项可用于恢复迁移(它们也会重叠):
1.向下滚动"最近“迁移:

rake db:migrate:down#仅限导轨2。

1.下滚 * 最近迁移的 * 数量(n):

一个月一个月

1.向下滚动 * 至 * 先前的 * 特定 * 版本:

$ rake db:migrate:down VERSION=nnn# Rails 3(同时提供版本号)。

版本号表示提交的SHA(安全哈希算法),它是一个长的十六进制数字,看起来像886af3194768917c78e...您可以通过执行git log来查看它
您可以使用rake -T db:查看这些命令(以及其他命令)及其说明,对于Rails 3.2,rake -T db:包括:

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)
a64a0gku

a64a0gku4#

您可以执行回滚并指定要回滚的最后迁移数,例如

rake db:rollback STEP=3

最后3次迁移。

pkmbmrz7

pkmbmrz75#

作为新程序员(或其他新程序员)
rake db:rollback工作大约一半的时间,我从那里开始。
如果不是,rake db:migrate:down VERSION=3846656238
插入VERSION作为要恢复的迁移文件的版本号。

h7appiyu

h7appiyu6#

rake db:migrate:redo

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

o7jaxewo

o7jaxewo7#

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

rails db:migrate:down VERSION=<version>

这些例子
Rails数据库:迁移:关闭版本=20170330090327

4c8rllxm

4c8rllxm8#

在终端中运行以下命令:

rake db:migrate:status

bundle exec rake db:migrate:status

它显示了我们之前运行的所有迁移的状态、迁移ID、迁移名称。选择您的迁移ID(即版本号),并将该ID放在以下命令中的version=、、、之后,然后按Enter键

bundle exec rake db:migrate:down VERSION=
kokeuurv

kokeuurv9#

如何回滚迁移

另一种方式。我更喜欢这种方式,因为你需要明确,而不是回滚-以防万一你可能会犯错误。

(1)首先确定迁移ID

rake db:migrate:status

  • 复制ID号。

(2)然后回滚迁移

rake db:migrate:down VERSION=20190802023239

  • 粘贴上面的相关ID号。当然,在您的情况下,迁移ID会有所不同!

.......现在你要去参加比赛了!

相关问题