我试图运行只有一个迁移出一大堆在我的Rails应用程序的。 我怎样才能做到这一点? 我不想之前或之后运行任何迁移。 谢谢。
Answer 1:
rake db:migrate:redo VERSION=xxxxxxx
,但将运行down
,然后up
一步。 你可以用临时注释掉向下步做到这一点结合。
Answer 2:
rake db:migrate:up VERSION=1234567890
同样rake db:migrate:down
采取的特定迁移下来。 你可以得到的可用耙任务列表rake -T
。
Answer 3:
我已经运行改变了单一的迁移,需要进行独立于其他所有迁移重新运行。 火起来的控制台,这样做:
>> require 'db/migrate/your_migrations.rb'
=> ["YourMigrations"]
>> YourMigrations.up
=> etc... as the migration runs
>> YourMigration.down
更有用地,这可能被放入一个rake任务等。
Answer 4:
rake db:migrate:up VERSION=version_no
将迁移(添加)特定迁移脚本
rake db:migrate:down VERSION=version_no
将删除特定迁移脚本
Answer 5:
rake db:migrate VERSION=20098252345
给一个尝试。
Answer 6:
通过以上korch扩大对答案, require
对我没有工作,但load
没有。 要具体,为迁移文件:
class ChangeMinQuantityToRaces < ActiveRecord::Migration
def change
change_column :races, :min_quantity, :integer, :default => 0
end
end
在控制台输入
> load 'db/migrate/30130925110821_change_min_quantity_to_races.rb'
> ChangeMinQuantityToRaces.new.change
为我工作。
> Race.new.min_quantity # => 0
这是为红宝石1.9.3p484(2013年11月22日修订版43786)[x86_64的Linux的]和Rails 3.2.13。
Answer 7:
rake db:migrate:redo version='xxxx'
记得把引号围绕XXXX,XXXX是您的迁移的时间戳(或迁移ID)。
您可以检查时间戳(移民ID)为您所用做前面的迁移
rake db:migrate:status
Answer 8:
添加我的2¢这一点,因为我遇到了同样的问题:
如果你绝对要运行再次迁移而无需创建一个新的,你可以做到以下几点:
rails dbconsole -p devdb=# delete from public.schema_migrations where version = '20150105181157';
和Rails会“忘记”,它跑了迁移20150105181157.现在,当你运行分贝:迁移将再次运行。
这几乎总是一个坏主意,但。 在一个实例,其中它可以使的感觉是,如果你有一个开发分支,你还没有充实了您的迁移而想要一些事情添加到它的发展。 但即使如此,这是更好地使你的迁移2路这样你就可以正确地回滚和反复重试。
Answer 9:
有一定是通过控制台运行迁移类的方法。 我似乎无法获得迁移代码可识别。
然而,作为评论表明,它的首选,以便运行迁移。 使用:
rake db:migrate VERSION=##########
复制并粘贴在迁移脚本/控制台你的代码?
Answer 10:
我有一个工具方法,所以这种方法在开发非常容易。 我发现,它帮助我避免产生过多的迁移 - 通常我修改迁移,直到他们已经部署。
http://fullware.net/index.php/2011/05/26/easily-load-rails-migrations-for-console-execution/
Answer 11:
我用在发展这种技术时,我改变迁移显著量,我不想在那些沿着需要很长的时间的方式(尤其是当我输入旧数据迁移下来一吨丢失任何数据我不想不得不再次重新导入)。
这是100%的hackish,我绝对不会推荐在生产中这样做,但它会做的伎俩:
- 移动迁移要重新跑出来的目录到一个临时的地方
- 生成具有相同名称的另一迁移
- 复制/粘贴在原迁移代码注入到新生成的迁移文件
- 运行新的迁移
- 删除新生成的迁移文件
- 编辑您的架构迁移到删除最近的值
- 恢复旧的文件迁移