You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL连接异常终止:无法确认代码是否正常运行

PostgreSQL连接意外终止的问题排查与修复

问题根源

你的代码存在三个核心问题,直接导致连接异常终止:

  • 配置参数错位:user和database的环境变量赋值搞反了,user应对应DB_USER,database应对应DB_DATABASE,参数不匹配会直接触发连接失败。
  • 异步操作未同步:client.connect()、client.query()都是异步操作,你直接同步执行后续代码,连接还未建立就调用查询和关闭连接,必然导致连接提前终止。
  • 语法错误:new Client的配置对象末尾缺少闭合的},代码无法正常解析执行。

修正后的代码

import { Client } from "pg";

const client = new Client({
  user: process.env.DB_USER,
  host: process.env.DB_HOST,
  database: process.env.DB_DATABASE,
  password: process.env.DB_PASSWORD,
  port: 5432,
  ssl: true,
});

// 用async/await处理异步流程,确保操作顺序正确
async function runDatabaseOps() {
  try {
    await client.connect();
    console.log("Database Connected!");
    
    const res = await client.query('SELECT NOW()');
    console.log("res------", res.rows[0]); // 需从rows中获取实际查询结果
    
    await client.end();
    console.log("Database Disconnected!");
  } catch (err) {
    console.error("连接或查询出错:", err);
    // 出错时确保关闭连接
    await client.end();
  }
}

runDatabaseOps();

export default client;

关键修复点

  1. 修正了user和database的环境变量映射关系
  2. 用async/await管控异步流程,保证连接建立→执行查询→关闭连接的顺序
  3. 增加错误捕获,避免未处理异常导致程序崩溃
  4. 正确访问查询结果的rows字段,而非直接打印Promise对象

内容的提问来源于stack exchange,提问作者Rahul Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:12:35