dav*_*ley 43 ruby database migration ruby-on-rails
我在字典中的意思是"变基",而不是git定义......
我有一个大型的,长期运行的Rails项目,大约有250次迁移,所以要管理所有这些项目变得笨拙.
也就是说,我确实需要一个基础来运行测试时清除和重建我的数据库.因此,这些数据非常重要.
是否有任何策略可以说,将模式转储到设定点 - 归档所有旧迁移并重新开始新的迁移.
显然我可以使用rake schema:dump - 但实际上我需要一种方法db:migrate将首先加载模式然后开始运行其余的迁移.
我想继续使用迁移,因为它们在开发中非常有用,但是,我无法回溯并编辑2007年的迁移,因此保留它似乎很愚蠢.
Zar*_*ony 50
通常,您不需要清理旧的迁移.如果您正在从头开始运行db:migrate(没有现有的db),Rails使用db/schema.rb来创建表而不是运行每次迁移.否则,它仅运行从当前架构升级到最新架构所需的迁移.
如果您仍希望将迁移到指定的点合并为一个,您可以尝试:
rake db:migrate VERSION=xxxrake db:schema:dump确保为聚合的新迁移选择一个旧的迁移版本号; 否则,Rails会尝试在生产服务器上应用该迁移(这会擦除现有数据,因为create_table语句使用:force⇒true).
无论如何,我不建议这样做,因为Rails通常可以很好地处理迁移.但是,如果您仍然想要,请务必仔细检查所有内容并首先在本地尝试,然后再冒生产服务器上的数据丢失风险.
要自动合并(或压缩)迁移,您可以使用Squasher gem
只需安装
gem install squasher
并使用日期运行,并且将合并该日期之前的迁移:
squasher 2016 # => Will merge all migration created before 2016
README中的更多细节
| 归档时间: | 
 | 
| 查看次数: | 8776 次 | 
| 最近记录: |