连接到数据库时出错 (Sql Server 2008 R2)
我正在使用“mssql”:“^5.1.0”
我能够连接到本地主机和 SQL Server 2017
[Nest] 29632 - 07/29/2019, 9:34 PM [TypeOrmModule] 无法连接到数据库。 正在重试 (1)... +876ms
ConnectionError: 无法连接到 {{host}}:1433 - 流被销毁后无法调用 write
在连接。
在 Object.onceWrapper (events.js:288:20)
在 Connection.emit (events.js:200:13)
在 Connection.socketError (nrwlnode_modulestediouslibconnection.js:1098:12)
在套接字。
在 Socket.emit (events.js:205:15)
在 errorOrDestroy (internal/streams/destroy.js:107:12)
在 onwriteError (_stream_writable.js:432:5)
在写入 (_stream_writable.js:459:5)
在 doWrite (_stream_writable.js:413:11)
请提出一些解决方案:)
嗨@bj9215 ,
你用的是什么版本的乏味? Mssql package.json 使用的是过时的 tedious 版本(当前的 tedious 版本是 v6.2.0)。 尝试更新它,看看它是否有帮助? :)
你在哪个版本的 Node.js 上运行? 你有启用加密吗?
当您尝试连接到旧版本的 SQL Server 时,您很可能需要调整加密设置以使用旧版本的 TLS 并使用 SQL Server 2008 和 Node.js 版本都支持的密码套件正在使用。
@bj9215你还有这个问题吗?
我有一个类似的问题机智“乏味”:“6.6.2”,
const config = {
server: 'local-sql-host',
authentication: {
type: 'default',
options: {
userName: process.env.AUTH_LOCAL_USR,
password: process.env.AUTH_LOCAL_PWD,
},
},
options: {
database: 'DATABASE_NAME',
encrypted: false,
},
}
debug connected to {local-sql-host}:1433
debug State change: Connecting -> SentPrelogin
debug State change: SentPrelogin -> SentTLSSSLNegotiation
debug Failed to connect to {local-sql-host}:1433 - Cannot call write after a stream was destroyed
connect $db> test.(): ConnectionError: Failed to connect to {local-sql-host}:1433 - Cannot call write after a stream was de
stroyed
at ConnectionError (C:\workspace\api-v3\dist\webpack:\node_modules\tedious\lib\errors.js:13:1)
at Connection.socketError (C:\workspace\api-v3\dist\webpack:\node_modules\tedious\lib\connection.js:1258:1)
at Socket.<anonymous> (C:\workspace\api-v3\dist\webpack:\node_modules\tedious\lib\connection.js:1093:1)
at Socket.emit (events.js:215:7)
at errorOrDestroy (internal/streams/destroy.js:108:12)
at onwriteError (_stream_writable.js:446:5)
at onwrite (_stream_writable.js:473:5)
at doWrite (_stream_writable.js:427:11)
at writeOrBuffer (_stream_writable.js:415:5)
at Socket.Writable.write (_stream_writable.js:305:11) {
message: 'Failed to connect to {local-sql-host}:1433 - Cannot call write after a stream was destroyed',
code: 'ESOCKET'
}
debug State change: SentTLSSSLNegotiation -> Final
debug Connection lost - 99404:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:c:\ws\deps\o
penssl\openssl\ssl\statem\statem_lib.c:1929:
ConnectionError: Connection lost - 99404:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:c
:\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1929:
at ConnectionError (C:\workspace\api-v3\dist\webpack:\node_modules\tedious\lib\errors.js:13:1)
at Connection.socketError (C:\workspace\api-v3\dist\webpack:\node_modules\tedious\lib\connection.js:1262:1)
at Socket.<anonymous> (C:\workspace\api-v3\dist\webpack:\node_modules\tedious\lib\connection.js:1093:1)
at Socket.emit (events.js:210:5)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
[ERROR] 12:23:11 ConnectionError
算了吧! encrypt
,未加密
@bj9215 暂时关闭。 如果您仍然遇到此问题,请随时重新打开!
一百万感谢!!
我遇到了同样的问题。 看起来 node-mssql 在此 PR 中将加密默认值从 false 更改为 true:
https://github.com/tediousjs/node-mssql/pull/977
@ataft的评论也帮助我解决了我的问题——将“加密”设置为 false 解决了我的问题。
@crazyx13th谢谢,这对我有帮助
算了吧!
encrypt
,未加密~
如果尝试在 1 周内修复,就会出现这种情况。
错误信息非常难以理解。
你在哪个版本的 Node.js 上运行? 你有启用加密吗?
当您尝试连接到旧版本的 SQL Server 时,您很可能需要调整加密设置以使用旧版本的 TLS 并使用 SQL Server 2008 和 Node.js 版本都支持的密码套件正在使用。
谢谢。 这解决了这个问题。 我刚刚添加了 _ --tls-min-v1.0 _ 标志
你好,我有同样的错误,我已经尝试做他们之前评论过的事情,但我不断收到同样的错误
ConnectionError: 无法连接到 {host}: 1433 - 流被销毁后无法调用 write
这是我的连接字符串。
常量配置 = {
用户:'用户',
密码:'密码',
服务器:'主机',
数据库:'名称数据库',
水池: {
最大:230,
分钟:0
}
};
我只是在数据库连接选项中使用了这个参数,选项:{ encrypt: false }
最有用的评论
算了吧!
encrypt
,未加密