Postgresql错误:连接已终止

时间:2016-04-18 03:42:49

标签: javascript node.js postgresql-9.3

我有一个简单的应用程序链接到postgres数据库。加载应用程序时,它会读取大约30行数据。但现在每一个它都不会加载,当我看到我的服务器时,我有错误错误:连接已终止。

通常如果我在很短的时间内装了好几次。

有谁知道为什么会发生这种情况?我工作得太辛苦了吗?

代码如下:

    function getDB(callback){
        console.log('inside getDB')
        Client.connect(function(err){
            if(err){
                return console.log('connection error', err)
            }
            Client.query('SELECT * FROM gallery', function(err, result){
                if(err){
                    return console.log('error receiving data', err)
                } else{
                callback(null, result.rows)
                }
                Client.end()
            })

        })
    }

2 个答案:

答案 0 :(得分:0)

您似乎正在使用node-postgres。您应该考虑使用其连接池。来自文档:

  

"通常,您将通过池访问PostgreSQL服务器   客户端。客户需要花费很多时间来建立一个   新的联系。客户也消耗了非常重要的金额   PostgreSQL服务器上的资源 - 不是你想要做的事情   每个http请求。好消息:node-postgres附带内置的   客户共享。"

创建新连接时会发生很多事情,应该尽可能避免使用它。利用汇集可能对您的情况有所帮助。

答案 1 :(得分:0)

我在将行插入Postgres数据库中的Node方法上遇到相同的“ 错误:连接终止”错误。这是我能够解决的方法。

控制台错误不是很有帮助,所以我查看了Postgres日志。 (使用Mac)

$ tail -10 /usr/local/var/log/postgres.log 
2019-02-24 10:06:38.920 CST [58520] LOG:  could not receive data from client: Connection reset by peer
2019-02-24 10:06:38.921 CST [58520] LOG:  unexpected EOF on client connection with an open transaction

这意味着客户端在服务器完成之前以某种方式断开了连接。就我而言,我没有正确地调用异步方法,因此客户端在执行数据库语句之前就已经完成,并且客户端断开了数据库连接。我使用了async / await风格的Node方法,但是忘记了用await调用我的async方法,这导致了错误。

对于Node中的Postgres查询,请务必遵循以下examples之一。