升级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
相关产品推荐
相关产品推荐

