我最近將phoenix項目升級到了Ecto 2.0.2。我有一些代碼是使用Task.Supervisor.async_nolink
在自己的線程上對數據庫進行一些更新。我收到以下錯誤我的測試運行時(只發生在我的測試中)Ecto 2.0 SQL Sandbox測試錯誤
[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.Adapters.SQL.Sandbox.mode(MyApp.Repo, {:shared, self()})
我正在這樣做。不幸的是,這是行不通的。
如何設置我的測試以避免發生此錯誤?
TLDR:沒有解決方案。 – Noma4i
感謝您報告發現的內容。我用Jose的反饋很好地解決了我的問題。所以,這就是解決方案。 –