【发布时间】:2013-09-30 01:14:47
【问题描述】:
假设我有一个包含大量迁移文件的应用,我正准备首次将其部署到生产环境。据我了解,我基本上有两种选择可以在生产服务器上启动数据库:
- A - 运行
db:migrate,并让它循环执行所有尚未运行的迁移 - B - 运行
db:schema:load,并让它从架构文件构建数据库
我知道 B 是新部署的正确选择,如 schema.rb cmets 中所述:
# If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
我想知道的是,这对生产服务器上的迁移有何影响?例如,如果我按顺序执行以下操作:
- 在新的生产服务器上运行
db:schema:load。 - 在开发中更改我的架构并推送到生产环境。
- 在生产服务器上运行
db:migrate
会发生什么?它会知道只使用比db:schema:load 操作更新的迁移,还是会尝试全部运行它们?
【问题讨论】:
-
你没有想过简单地运行这几个命令来检查自己吗?
-
@MichaelSzyndel - 谁说我没想到?
-
你的问题是这样的。如果你这样做了,你会发现它应该可以正常工作(只要在
schema:load期间填充了迁移数据库表,我并没有真正检查过)
标签: ruby-on-rails database-migration rails-migrations