0
connection.on('error', function (err) {
    console.log(err);
    if (err.code === 'ESOCKET') {
      console.log('----- Connection lost removing connection from pool -----');
      // self.pool.destroy(connection);
      connection.close();
      connection = new Connection(config);
    }
  });

我必须使用上面的代码,但我收到连接超时错误消息..

{ [ConnectionError: Connection lost - read ECONNRESET]
  message: 'Connection lost - read ECONNRESET',
  code: 'ESOCKET' }

请帮助如何解决这个问题...

4

3 回答 3

0

我想补充一下我对这个问题的经验:

我在新的数据库批量加载时随机遇到此问题并且无法复制它。我发现通过将批量加载的大小从 18k 记录减少到大约 12k,插入工作没有问题。还是过不了12k。

长话短说,我发现我的一条记录显然超出了我放在 db 上的 varchar 限制的容量,并且它抛出了一个错误。但是,直到我一一插入记录,该错误才暴露给我。

于 2017-09-06T15:39:00.080 回答
0

您必须从 connection.on() 方法中关闭连接。在我的情况下,我在查询调用后关闭连接,在我的应用程序路由结束时。这是我的代码:

app.post('/', function(req, res){
    let query;
    query = "SELECT * FROM Customers";
    queryDatabase(query,res);
    connection.close();
});

于 2018-09-22T17:50:02.170 回答
0

似乎您有很长的空闲连接并且将被关闭。这个问题在 Github https://github.com/tediousjs/tedious/issues/300讨论了很久,目前看来还没有结果。

作为一种解决方法,您可以尝试使用https://github.com/tediousjs/tedious-connection-pool#new-connectionpoolpoolconfig-connectionconfig与池建立连接。

于 2016-11-10T08:22:52.423 回答