Elixir pry会话因数据库连接超时而中断

时间:2016-11-29 23:25:14

标签: debugging testing elixir phoenix-framework ecto

关于如何在我的Phoenix控制器测试中运行this advice调试器,我很高兴关注

    目标文件中的
  • require IEx
  • IEx.pry添加到所需的行
  • 在IEx中运行测试:iex -S mix test --trace

但几秒钟后,这个错误总是出现:

16:51:08.108 [error] Postgrex.Protocol (#PID<0.250.0>) disconnected: 
** (DBConnection.ConnectionError) owner #PID<0.384.0> timed out because 
it owned the connection for longer than 15000ms

如消息所示,此时数据库连接似乎超时,并且调用数据库连接的任何命令都将使用DBConnection.OwnershipError错误输出。如何告诉我的数据库连接不要超时,以便我可以安静地调试我的测试?

1 个答案:

答案 0 :(得分:4)

Ecto.Adapters.SQL.Sandbox FAQ提及此问题,并解释说您可以将:ownership_timeout设置添加到Repo配置中,以指定数据库连接在超时之前应保持打开的时间。我把我的时间设置为10分钟(仅限测试环境),所以我再也不用考虑它了:

# config.test.exs

config :rumbl, Rumbl.Repo,
  # ...other settings...
  ownership_timeout: 10 * 60 * 1000 # long timeout so pry sessions don't break

正如所料,我现在可以在pry中闲逛10分钟,然后才能看到错误。