渲染托管 Postgres 数据库在任何连接尝试时都会抛出 ECONNRESET Node Express App

Bra*_*arr 1 postgresql node.js express econnreset render.com

我无法在渲染中查询我的 Postgres 数据库。我在网上研究了这个问题,发现这是一个常见问题,但我找到的解决方案都不起作用。

这是我的服务器端代码(我使用 NodeJS、Express、Typescript 和 Postgres)

import postgres, { RowList, Row } from 'postgres'
import appconfig from '../app.config'

type Query = (sql: string) => Promise<RowList<Row[]>>

const query: Query = async (sql) => {
  try {
    const q = postgres({
      host: appconfig.database.host,
      port: appconfig.database.port,
      database: appconfig.database.schema,
      username: appconfig.database.username,
      password: appconfig.database.password,
    })
    const res = await q`${sql}`

    return res
  } catch (err) {
    throw err
  }
}

export default query
Run Code Online (Sandbox Code Playgroud)

我每次都会收到以下错误,并且没有成功尝试。值得注意的是,我在同一台 PC 上使用相同的凭据从 PGAdmin 连接没有任何问题

Error: read ECONNRESET
    at TCP.onStreamRead (node:internal/stream_base_commons:217:20)      
    at cachedError (C:\Users\xxxxx\repos\one-watch\node_modules\postgres\cjs\src\query.js:171:23)
    at new Query (C:\Users\xxxxx\repos\one-watch\node_modules\postgres\cjs\src\query.js:36:24)
    at sql (C:\Users\xxxxx\repos\one-watch\node_modules\postgres\cjs\src\index.js:111:11)
    at C:\Users\xxxxx\repos\one-watch\src\database\query.ts:15:24   
Run Code Online (Sandbox Code Playgroud)

我以前从未使用过 postgres,到目前为止,我所有的数据库经验都是在 mysql 中,尽管我不认为这是 postgres 问题,但可能只是 Render 实现其 Postgres 服务的细微差别。任何帮助将不胜感激,谢谢!

我发现的唯一类似这篇文章是相关的,但它们至少能够获得某种成功的连接至少一次。就我而言,他们都失败了。

小智 5

添加

?sslmode=不验证

在网址的末尾对我有用。