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;
关键修复点
- 修正了
user和database的环境变量映射关系 - 用
async/await管控异步流程,保证连接建立→执行查询→关闭连接的顺序 - 增加错误捕获,避免未处理异常导致程序崩溃
- 正确访问查询结果的
rows字段,而非直接打印Promise对象
内容的提问来源于stack exchange,提问作者Rahul Kumar
相关产品推荐
相关产品推荐

