簡體   English   中英

Postgresql 錯誤:連接終止

[英]Postgresql Error: connection terminated

我有一個鏈接到 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()
            })

        })
    }

我在將行插入 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 調用我的異步方法,這導致了錯誤。

對於 Node.js 中的 Postgres 查詢,請務必遵循以下示例之一。

看起來您正在使用node-postgres 您應該考慮使用其連接池。 從文檔:

“通常,您將通過客戶端池訪問 PostgreSQL 服務器。客戶端需要花費大量時間來建立新連接。客戶端還消耗 PostgreSQL 服務器上的大量資源 - 這不是您想要的對每個 http 請求執行。好消息:node-postgres 附帶內置客戶端池。”

創建新連接時會發生很多事情,您應該盡可能避免它。 利用池化可能對您的情況有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM