具有多个虚拟机的自动 Ecto 迁移?

Automatic Ecto migrations with multiple VMs?

我在需要访问同一个 Postgres 数据库的不同 Erlang VM 实例中有 N 个工作进程(不是 Erlang PID),其中 N >= 2。当这些工作进程升级时,我希望能够 运行 Ecto 会自动迁移,因此当我对这些 worker 进行升级时,如果可能的话,我不必经历 "stop all workers, run migration, start all workers again" 的过程。然而,仔细想想,我能想到的唯一解决办法是:

但是所有这些解决方案都感觉像是解决问题的技巧。要么我在这里失踪,要么我只是以错误的方式考虑迁移,我不确定其中哪一个是正确的。

Have another worker specifically to only do migrations. This is the path I'm likely going to end up using.

这似乎是目前最好的方法。虽然注意Ecto 3.0,目前在master开发中,运行迁移时会使用锁,所以这个问题会为你解决。