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

升级Knex至2.4.2后无法连接MSSQL数据库求助

解决Knex 2.4.2连接MSSQL实例时的getaddrinfo错误

问题原因

升级Knex到2.4.2版本后,配合mssql 9.1.1,原有的MSSQL连接配置中把服务器地址+实例名写在server字段的方式不再被正确解析。旧版本Knex会自动拆分地址和实例名,但新版本会把整个字符串12345.dev.abc.com\\AV01当作主机名去解析,导致DNS查询失败,抛出getaddrinfo ENOTFOUND错误。

解决方案

修改连接配置,将实例名从server字段拆分出来,放到options.instanceName中单独配置:

修改后的config配置

{
    client: 'mssql',
    connection: {
        server: '12345.dev.abc.com', // 仅保留服务器地址
        database: 'DAB70',
        user: 'testsql',
        password: 'testsql',
        sendStringParametersAsUnicode: false,
        requestTimeout: 6000000,
        options: {
            enableArithAbort: true,
            sendStringParametersAsUnicode: false,
            trustServerCertificate: true,
            instanceName: 'AV01' // 单独配置实例名
        }
    },
    pool: {
        max: 30
    },
}

补充说明

  • 无需指定端口时可以省略port字段,MSSQL默认端口为1433;
  • Knex 2.x版本会直接将连接参数传递给底层mssql驱动,因此需要遵循驱动的参数格式;
  • 保留其他原有配置项不变,即可正常建立连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:25:03