将库从 Ecto 1 更​​新到 Ecto 2 后出现“关闭:无法启动子项:DBConnection.Ownership.Manager”

Hen*_*k N 1 elixir ecto postgrex

我有一个使用 Ecto 和 Postgrex 的库(Postgrex 仅在测试中使用)。

从 Ecto 1 升级到 Ecto 2 后,测试套件开始出现以下错误:

$ mix test
Compiling 4 files (.ex)
Generated ectoo app
** (EXIT from #PID<0.46.0>) shutdown: failed to start child: DBConnection.Ownership.Manager
    ** (EXIT) exited in: GenServer.call(DBConnection.Ownership.PoolSupervisor, {:start_child, [#PID<0.175.0>, Postgrex.Protocol, [pool: DBConnection.Poolboy, types: true, hostname: "localhost", types: true, otp_app: :ectoo, repo: Ectoo.Repo, adapter: Ecto.Adapters.Postgres, database: "ectoo_test", username: "henrik", pool_timeout: 5000, timeout: 15000, adapter: Ecto.Adapters.Postgres, database: "ectoo_test", username: "henrik", extensions: [{Ecto.Adapters.Postgres.DateTime, []}, {Postgrex.Extensions.JSON, [library: nil]}], port: 5432]]}, :infinity)
        ** (EXIT) no process
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Hen*_*k N 5

我通过确保postgrex测试运行时应用程序正在运行来解决此问题。

在 mix.ex 中:

def application do
  [applications: applications(Mix.env)]
end

defp applications(:test), do: [:logger, :postgrex]
defp applications(_), do: [:logger]
Run Code Online (Sandbox Code Playgroud)