node.js - Nodejs mssql服务器连接抛出错误
问题描述
我想从 nodejs 连接我的 mssql 数据库。我为此使用了 sequelize 和乏味的模块。我的连接配置是这样的
const sequelize = new Sequelize(
"mydb",
"username", "password", {
host:config_data.host,
"dialect":"mssql",
"port":1433
dialectOptions: {
instanceName: "MSSQLSERVER"
},
},
);
当我尝试运行脚本时,它会引发错误。
(node:14584) UnhandledPromiseRejectionWarning: SequelizeConnectionError: Failed to connect to 192.168.10.220:1433 - Could not connect (sequence)
我在配置管理器中应用所有步骤。启用 TCP/IP 启动服务器 SQL 浏览器 将 1433 端口添加到防火墙
当主机为“localhost”时还有额外的错误。(当前写入的IP地址)
(node:13552) UnhandledPromiseRejectionWarning: SequelizeConnectionError: Failed to connect to localhost:1433
- 4292:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:c:\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1947:
我需要帮助,有人知道吗?
解决方案
问题是由于源和目标服务器之间的 TLS 协议不匹配。就我而言,我的应用服务器是 Ubuntu 20.04,而我的 SQL Server(Express 2012)在 Windows 服务器上。我还尝试在 Ubuntu 上降级 TLS 协议,但没有任何效果。所以最后我在 Sequelize 中禁用了 tls 加密。确保选项按照 Sequelize 的预期给出
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
host: dbConfig.HOST,
port: dbConfig.PORT,
dialect: dbConfig.dialect,
pool: {
max: dbConfig.pool.max,
min: dbConfig.pool.min,
acquire: dbConfig.pool.acquire,
idle: dbConfig.pool.idle,
},
// The below options are important to supress ssl issue on
// AWS EC2 ubuntu when db server is on windows. There is TLS protocol issue
// Which by using these options we disable tls encryption
dialectOptions: {
// Observe the need for this nested `options` field for MSSQL
options: {
encrypt: false,
enableArithAbort: false
}
}
});
推荐阅读
- reactjs - 钩子在子组件中的单个更改上重新渲染整个页面
- r - 从多个 XML 文件创建文本数据框
- reactjs - useContext 与 immutableJS
- c - C将void指针数组传递给函数
- php - 我想问如何将此mysqli代码更改为PDO?其他页面无法解决我的问题
- powershell - 从 Get-Childitem 捕获不可访问文件夹的路径
- python - 如何在 django rest 框架序列化程序中序列化布尔值列表?
- javascript - this.props.navigation.navigate() 不工作
- python - Confused Regarding PyTorch GRU Docs
- tensorflow - Rasa x 不使用 GPU