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();
- 额外检查项
- 确认
SQL Server (SQLEXPRESS)服务已启动:打开系统服务管理器,找到该服务并确保状态为“运行中” - 启用 SQL Server TCP/IP 协议:打开 SQL Server 配置管理器,在“SQL Server 网络配置”中启用 TCP/IP,之后重启 SQL Server 服务
- 验证账号密码正确性:确认使用的是 SQL Server 中存在的登录账号,而非 MySQL 的 root
- 端口配置:若 SQL Server 使用了非默认端口(默认1433),需在
config中添加port: 你的端口号
- 确认
内容的提问来源于stack exchange,提问作者shaziyali
相关产品推荐
相关产品推荐

