是否有一种简单的方法来运行单个迁移?我不想迁移到某个版本,我只想运行一个特定的版本。
当前回答
如果您希望运行特定的迁移,请执行
$ rake db:migrate:up VERSION=20080906120000
如果您想多次运行迁移,那么就这样做
# use the STEP parameter if you need to go more than one version back
$ rake db:migrate:redo STEP=3
如果您希望多次运行一个迁移,那么就这样做
# this is super useful
$ rake db:migrate:redo VERSION=20080906120000
(您可以在迁移的文件名中找到版本号)
编辑:您也可以简单地重命名您的迁移文件,例如:
20151013131830 _my_migration。Rb -> 20151013131831_my_migration.rb
然后正常迁移,这将把迁移视为一个新的迁移(如果您想在您控制较少的远程环境(如登台)上迁移,则非常有用)。
编辑2:您还可以在数据库中删除迁移条目。例如:
rails_c> q = "delete from schema_migrations where version = '20151013131830'"
rails_c> ActiveRecord::Base.connection.execute(q)
Rake db:migrate会重新运行nuked迁移的up方法。
其他回答
方法一:
rake db:migrate:up VERSION=20080906120000
方法2:
在Rails控制台中 1. 在控制台复制粘贴迁移类(例如add_name_to_user.rb) 2. 然后在控制台输入以下命令
Sharding.run_on_all_shards{AddNameToUser.up}
结束了!!
如果您希望运行特定的迁移,请执行
$ rake db:migrate:up VERSION=20080906120000
如果您想多次运行迁移,那么就这样做
# use the STEP parameter if you need to go more than one version back
$ rake db:migrate:redo STEP=3
如果您希望多次运行一个迁移,那么就这样做
# this is super useful
$ rake db:migrate:redo VERSION=20080906120000
(您可以在迁移的文件名中找到版本号)
编辑:您也可以简单地重命名您的迁移文件,例如:
20151013131830 _my_migration。Rb -> 20151013131831_my_migration.rb
然后正常迁移,这将把迁移视为一个新的迁移(如果您想在您控制较少的远程环境(如登台)上迁移,则非常有用)。
编辑2:您还可以在数据库中删除迁移条目。例如:
rails_c> q = "delete from schema_migrations where version = '20151013131830'"
rails_c> ActiveRecord::Base.connection.execute(q)
Rake db:migrate会重新运行nuked迁移的up方法。
请注意,您可能不得不在新的rails环境中使用rails runner而不是script/runner。
如果你在路径上有问题,你可以使用
require Rails.root + 'db/migrate/20090408054532_add_foos.rb'
至于rails 5,你也可以使用rails来代替rake
Rails 3 - 4
# < rails-5.0
rake db:migrate:up VERSION=20160920130051
Rails 5
# >= rails-5.0
rake db:migrate:up VERSION=20160920130051
# or
rails db:migrate:up VERSION=20160920130051
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 是否可以在MiniTest中运行单个测试?
- 如何在Ruby中生成a和b之间的随机数?
- ActiveRecord OR查询
- 无法安装gem -未能建立gem本地扩展-无法加载这样的文件——mkmf (LoadError)
- 如何在Ruby中创建文件
- 什么是Ruby文件。开放模式和选项?
- Ruby数组到字符串的转换
- 如何分割(块)一个Ruby数组成X元素的部分?
- Ruby中“or”和||的区别?
- 在Rails中使用user_id:integer vs user:references生成模型
- 如何测试参数是否存在在轨道
- 验证多个列的唯一性
- Rails:在where语句中使用大于/小于
- Rails:如何为Rails activerecord的模型中的属性创建默认值?