假设我有一个包含一堆迁移文件的应用程序,我正准备首次将其部署到生产环境中。据我了解,我基本上有两种选择可以在生产服务器上启动数据库:
- A - 运行
db:migrate
,并让它循环遍历它尚未运行的所有迁移 - B - 运行
db:schema:load
,并让它从模式文件构建数据库
我知道 B 是新部署的正确选择,如schema.rb
评论中所述:
# 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
操作更新的迁移,还是会尝试全部运行它们?