我有一个使用 Yesod 和 Persistent 的网络应用程序。我正在使用默认的脚手架Foundation.hs
和Application.hs
. 我编写了一个处理本地 JSON 文件的函数,然后为 JSON 文件中的每个项目将一行插入到几个表中。所以它将总共执行 1000 多次插入。
在 GHCI 中运行该函数,它成功保存了一些行,然后出现以下错误:
libpq: failed (FATAL: sorry, too many clients already)
使用 postgres 查询:
select *
from pg_stat_activity
where datname = 'mydb-name'
我可以看到我的应用程序创建了 100 个空闲连接并且没有关闭。然后我需要终止这些连接才能做任何事情。
INSERT
当查询完成时,不应该持久关闭这些连接吗?我需要做些什么不同的事情?