为什么 Ecto 有 maintenance_database 选项?

Why does Ecto have a maintenance_database option?

我最近浏览了 Ecto Postgres Adapter 的文档,发现它有一个 maintenance_database 的选项。它说这是删除或创建数据库时使用的数据库。但为什么它需要这个,因为在删除或创建数据库时,您大部分时间都会使用混合任务,并且此时它是一个控制器,所以它不会使用持久连接来连接到数据库呢?

我只是对这个选项感到困惑,因为它看起来很奇怪,我想知道是否有人可以阐明如何以实用的方式使用它以及它为什么会存在。

如果这是提出此类讨论问题的错误媒介,请告诉我,我会将其移至其他位置。

首先,

mix 不包含在发行版中。想象一下当您维护不能在纳秒内关闭的关键任务软件时的情况。现在出于性能原因需要清理数据库。

最简单(也是最快)的方法是删除并创建数据库。因此,您通过 GenServer.code_change/3 回调 部署执行操作的代码来指示您的监督树理解此选项。

此外,我怀疑我是否遵循了您在问题中提到的 controller applications do not require 到 运行.