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

NodeJS连接Microsoft SQL Server失败求助:连接错误排查

Node.js 连接 Microsoft SQL Server 失败求助

我已经尝试两周用 Node.js 连接 Microsoft SQL Server,但一直没成功,求帮忙解决。Instagram:shaziyali8

我的代码

const mysql = require("mysql");

const connection = mysql.createConnection({
  host: "HP\\SQLEXPRESS", // 我试过 localhost、127.0.0.1、.(点)这些值
  user: "root",
  password: "",
  database: "testEmp",
//   port: 8889,
});
// console.log(connection);

connection.connect((err) => {
  if (err) {
    console.log(err);
  } else {
    console.log("connect");
  }
});

报错信息

Error: getaddrinfo ENOTFOUND HPSQLEXPRESS
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26)
    --------------------
    at Protocol._enqueue (F:\NodeJs\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (F:\NodeJs\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (F:\NodeJs\node_modules\mysql\lib\Connection.js:116:18)
    at Object.<anonymous> (F:\NodeJs\MySql\index.js:13:12)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47 {
  errno: -3008,
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'HPSQLEXPRESS',
  fatal: true
}

问题分析与解决步骤

  • 核心问题:用错了数据库驱动
    你要连接的是 Microsoft SQL Server,但代码里用的是mysql包——这个包仅适配 MySQL 数据库,和 SQL Server 不兼容,这是连接失败的根本原因。

  • 替换为 SQL Server 专用驱动
    安装官方推荐的mssql包:

npm install mssql
  • 修改连接代码
    用mssql包重写连接逻辑,适配 SQL Server 的配置规则:
const sql = require('mssql');

const config = {
  user: '你的SQL Server用户名', // 注意:SQL Server 默认没有 root 用户,换成你实际创建的登录账号(比如 sa)
  password: '你的账号密码',
  server: 'HP\\SQLEXPRESS', // 保留转义符,或用双引号包裹成 "HP\\SQLEXPRESS"
  database: 'testEmp',
  options: {
    encrypt: false, // 本地 SQL Server 通常不需要加密
    trustServerCertificate: true // 本地环境开启此项可避免证书验证错误
  }
};

async function connect() {
  try {
    await sql.connect(config);
    console.log('连接成功');
    // 此处可添加查询等业务逻辑
  } catch (err) {
    console.error('连接失败:', err);
  }
}

connect();
  • 额外检查项
    1. 确认SQL Server (SQLEXPRESS)服务已启动:打开系统服务管理器,找到该服务并确保状态为“运行中”
    2. 启用 SQL Server TCP/IP 协议:打开 SQL Server 配置管理器,在“SQL Server 网络配置”中启用 TCP/IP,之后重启 SQL Server 服务
    3. 验证账号密码正确性:确认使用的是 SQL Server 中存在的登录账号,而非 MySQL 的 root
    4. 端口配置:若 SQL Server 使用了非默认端口(默认1433),需在config中添加port: 你的端口号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:50:27