azure sql连接超时繁琐

时间:2016-11-09 06:07:00

标签: node.js azure tedious

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

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

3 个答案:

答案 0 :(得分:0)

您似乎有一个很长的空闲连接,它将被关闭。 Github https://github.com/tediousjs/tedious/issues/300已经讨论了这个问题很长一段时间了,目前似乎还没有结果。

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

答案 1 :(得分:0)

我想在此问题上添加我的经验:

我在新的数据库批量加载上随机获取此问题并且无法复制它。我发现通过将bulkload的大小从18k记录减少到大约12k,插入工作没有问题。虽然无法超过12k。

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

答案 2 :(得分:0)

您必须从connection.on()方法中关闭该连接。就我而言,我在应用程序路由的末尾在查询调用后关闭了连接。这是我的代码:

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