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

Node.js中使用Sequelize执行原生MySQL查询后如何关闭连接

解决方案

实现逻辑说明

你当前使用的Sequelize默认通过连接池管理数据库连接,常规场景下查询完成后连接会自动放回连接池等待复用。如果你需要主动释放连接验证报错,建议通过手动获取、释放单连接的方式实现,不要直接关闭整个连接池(会导致后续请求无法获取数据库连接,仅适合一次性测试脚本场景)。

调整后的查询代码

const dbConnect = require('../database/db');
// 补充你代码中缺失的QueryTypes导入
const { QueryTypes } = require('sequelize');

let connection;
try {
  // 从连接池获取单独的可用连接
  connection = await dbConnect.connectionManager.getConnection();
  // 使用当前获取的连接执行查询
  const getEmployeeData = await connection.query(
    `Select * From employee where employeeId = '00001'`, 
    {type: QueryTypes.SELECT}
  );
  // 主动释放当前连接,归还到连接池
  await dbConnect.connectionManager.releaseConnection(connection);
  return res.json({data: getEmployeeData});
} catch (error) {
  // 异常场景也需要释放连接,避免连接泄漏
  if (connection) {
    await dbConnect.connectionManager.releaseConnection(connection);
  }
  // 此处添加你的自定义错误处理逻辑
  return res.status(500).json({error: '查询失败', msg: error.message});
}

特殊场景说明

如果你测试需要直接关闭整个连接池(仅适合单次运行的脚本,禁止在常驻运行的Web服务中使用),可以直接在return语句前添加await dbConnect.close()即可。

内容的提问来源于stack exchange,提问作者A.K.M. Arifur Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:24:03