Tedious: ConnectionError: 无法连接到 {{host}}:1433 - 流被销毁后无法调用 write

创建于 2019-07-29  ·  14评论  ·  资料来源: tediousjs/tedious

连接到数据库时出错 (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
在连接。(nrwlnode_modulesmssqllibtedious.js:244:17)
在 Object.onceWrapper (events.js:288:20)
在 Connection.emit (events.js:200:13)
在 Connection.socketError (nrwlnode_modulestediouslibconnection.js:1098:12)
在套接字。(nrwlnode_modulestediouslibconnection.js:971:14)
在 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)

请提出一些解决方案:)

最有用的评论

算了吧! encrypt ,未加密

所有14条评论

@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 }

此页面是否有帮助?
0 / 5 - 0 等级