【发布时间】:2016-11-15 02:15:46
【问题描述】:
我最近将我的 phoenix 项目升级到了 Ecto 2.0.2。我有一些代码使用Task.Supervisor.async_nolink 在自己的线程上对数据库进行一些更新。我的测试运行时出现以下错误(仅在我的测试中发生)
[error] Postgrex.Protocol (#PID<0.XXX.0>) disconnected: **
(DBConnection.ConnectionError) owner #PID<0.XXX.0> exited while
client #PID<0.XXX.0> is still running with: shutdown
现在我认为我明白发生了什么:在数据库事务完成之前,正在重新签入 Ecto Sandbox 连接池。根据文档(至少我阅读它们的方式),解决这些问题的方法是使用共享连接池:Ecto.Adapters.SQL.Sandbox.mode(MyApp.Repo, {:shared, self()}),我正在这样做。不幸的是,这不起作用。
如何设置我的测试,以免发生此错误?
【问题讨论】:
标签: elixir phoenix-framework ecto