2011-09-23 47 views
3

我有一个生产数据库,我跟如何DB:模式:DB后迁移负载

rake db:create db:schema:load db:seed 

我还包括迁移,提供我的产品时,让现有的设备可更新做准备。

架构之后:只加载最新迁移的版本存储在schema_migrations中,因此当我运行db:migrate时,迁移器尝试运行所有其他尚未存在于schema_migrations中的迁移。

有没有一种好的方法来处理这个并不需要我来折叠迁移的问题(因为那是不可能的 - 就像db:migrate作为准备步骤一样)?

回答

2

只是不要分贝:模式:负载,通过迁移来代替:

rake db:create db:migrate db:seed 

请记住,在大/长传球项目迁移是一个艰辛的道路。你应该努力保持你的seeds.rb更新并使用你的方式。随着项目的演变,旧的迁移往往会失败,因为模型变更不兼容(就旧迁移而言)。

+0

你说得对,很难保持旧的迁移工作。随着这个项目的年龄和规模不幸,我们没有办法花费时间让这些人再次工作。这就是为什么在我提到的最后一句话中,db:migrate是没有选择的。 – CMW

+0

对不起,我没有让你正确。其实,在我的项目db:reset不会导致旧的迁移再次通过。那么,我曾经有过一个非常古老的项目,从rails 2. *开始演变,我刚刚删除了所有旧的迁移,并且没有任何问题。 Git会跟踪以防万一;) – sergeych