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

Node.js使用mysql模块连接数据库时遇‘server closed the connection’错误求助

搞定Node.js连接数据库时的"Connection lost: The server closed the connection"错误

嘿,我一眼就揪出问题所在了——你用错数据库驱动啦!

你配置里写的端口是1521,这可是Oracle数据库的默认端口,但你却在用专门给MySQL设计的mysql模块来连接,这俩数据库的通信协议完全不一样,根本不兼容!难怪你用Putty(应该是用Oracle的客户端工具比如sqlplus?)能正常查询,Node这边直接被服务器断开连接了。

下面给你一步步解决的办法:

第一步:换对驱动模块

别再用mysql模块了,换成Oracle官方维护的oracledb模块,这是专门为Node.js连接Oracle数据库打造的驱动。

先安装模块

打开终端执行:

npm install oracledb

改写你的代码

我给你适配了你的需求,把原来的mysql代码改成oracledb的写法:

const oracledb = require('oracledb');

// 对应你原来的连接参数,注意connectString的格式
const dbConfig = {
  user: "someuser",
  password: "********",
  connectString: "10.90.103.4:1521/db" // 格式为「主机地址:端口/数据库服务名」,db对应你原来的database字段
};

async function queryExceptionRecord() {
  let conn;
  try {
    // 建立数据库连接
    conn = await oracledb.getConnection(dbConfig);
    console.log("数据库连接成功!");

    // 执行查询,用绑定变量更安全,也符合Oracle的最佳实践
    const result = await conn.execute(
      `SELECT * FROM CLE_EXCEPTIONRECORD WHERE CORRELATIONID = :correlationId`,
      ['983b2f58-e0eb-49cb-b76c-9b8107de3edc']
    );

    // 打印查询结果
    console.log("查询结果:");
    console.log(result.rows);
  } catch (err) {
    console.error("出错啦:", err);
  } finally {
    // 最后务必关闭连接,避免资源泄漏
    if (conn) {
      try {
        await conn.close();
        console.log("连接已关闭");
      } catch (closeErr) {
        console.error("关闭连接时出错:", closeErr);
      }
    }
  }
}

// 调用查询函数
queryExceptionRecord();

第二步:处理可能的客户端依赖问题

如果运行时提示找不到Oracle客户端,你需要安装Oracle Instant Client,然后把它的路径加到系统环境变量PATH里;或者在代码里用oracledb.initOracleClient()方法指定客户端路径,比如:

// Windows系统示例
oracledb.initOracleClient({ libDir: 'C:\\path\\to\\instantclient' });
// Mac/Linux系统示例
// oracledb.initOracleClient({ libDir: '/usr/lib/oracle/19.3/client64/lib' });

为啥原来的代码不行?

简单来说:mysql模块只懂MySQL的通信协议,Oracle用的是完全不同的协议,你拿MySQL的驱动去连Oracle服务器,服务器根本看不懂你的请求,直接就把连接关了,这就是你看到那个错误的核心原因。

最后再确认下:你的数据库用户权限没问题(毕竟Putty能正常连接),只要换对驱动,应该就能顺利查到数据啦!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:36:33