尝试通过 knex 连接到 Mssql 服务器

Joh*_*Doe 4 sql-server node.js knex.js

我正在尝试使用 knex 连接到远程数据库,但出现此错误:“乏味的弃用默认值options.encrypt将从 更改falsetruefalse如果您想保留当前行为,请明确传递。在 node_modules\mssql\lib\tedious。 js:212:23 未处理的拒绝 ConnectionError: 无法连接到 151.80.119.227,14831:1433 - getaddrinfo ENOTFOUND 151.80.119.227,14831"

我可以通过 Microsoft sql server management studio 使用相同的主机、用户、密码进行连接,所以我迷路了。

编辑:这就是我创建 knex var 的方式:

 var knex = require('knex')({
  client: 'mssql',
  connection: {
    server : '151.80.119.227,14831',
    user : '****',
    password : '****',
    database : '****'
  }
});
Run Code Online (Sandbox Code Playgroud)

我可以通过 python 连接到它:

 con = pyodbc.connect("DRIVER={SQL Server};server=151.80.119.227,14831;database=*****;uid=****;pwd=****")
Run Code Online (Sandbox Code Playgroud)

那么为什么它不通过 node.js 连接....

小智 7

端口实际上应该在 MSSQL 选项变量中指定:

 var knex = require('knex')({
  client: 'mssql',
  connection: {
    server : '151.80.119.227',
    user : '****',
    password : '****',
    database : '****',
    options: {
      port: 14831
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

这是从https://github.com/tgriesser/knex/blob/v0.16.2/src/dialects/mssql/index.js阅读代码


Mik*_*stö 2

node-mssql 驱动程序的端口应如下设置:

{
  dialect: 'mssql',
  connection: {
    user: "sa",
    password: "S0meVeryHardPassword",
    server: "151.80.119.227",
    port: 14831,
    database: "knex_test"
  }
}
Run Code Online (Sandbox Code Playgroud)