【问题标题】:azure sql connection timeout in tediousazure sql连接超时繁琐
【发布时间】:2016-11-09 06:07:00
【问题描述】:
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' }

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

【问题讨论】:

    标签: node.js azure tedious


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      长话短说,我发现我的一条记录显然超出了我在 db 上设置的 varchar 限制的容量,并且它抛出了一个错误。然而,直到我一一插入一条记录,我才发现这个错误。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 您是在 conn.on 内部还是在其外部调用 conn.close?如果你在外面调用它,它不会在conn.on的回调完成之前调用conn.close吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-25
        • 2019-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多