【问题标题】:Handling Azure SQL errors in Node处理 Node 中的 Azure SQL 错误
【发布时间】:2021-07-07 11:24:16
【问题描述】:

我在我的 Node 应用程序中使用 Azure MySQL 数据库,它工作正常,只是在使用几分钟后,Azure 关闭连接并且 Node 抛出错误:

Error: read ECONNRESET

我需要的是防止我的 Node 应用程序崩溃并告诉它在出现此类异常后重新连接。我试过了:

var con = mysql.createConnection({
  host: "mydatabase.mysql.database.azure.com",
  user: "nodeapp@mydatabase",
  password: "12345",
  database: "mydatabase",
  port: 3306
});

    process.on('uncaughtException', function(err) {
      con.destroy();
      con.connect();
      console.log(err);
    });

这可以防止应用程序崩溃,但我的应用程序在此之后无法写入数据库,因此重新连接失败。出现此类错误后我应该如何重新连接?非常感谢任何建议。

【问题讨论】:

  • 有什么建议吗?我不是在寻找错误的根源,而是在发生错误时重新连接。

标签: mysql node.js azure exception


【解决方案1】:

重现您的错误:连接大约 3 分钟后抛出以下错误。

原因似乎是您数据库上的一些设置,如下所示:wait_timeout=180

我的解决方案:

1.提高 wait_timeout 的值:

2。如果在建立单个重用连接时发生这种情况,则可以通过建立连接池来避免。参见this post

【讨论】:

  • 感谢您的努力。是的,异常处理代码可以防止应用程序崩溃,但不幸的是没有正确重新连接。但是提高 timeout 参数的值应该可以,谢谢。
  • 很高兴听到它有帮助,我会删除答案中无用的部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多