【问题标题】:Error appear when using cron [Scheduler] QueryFailedError: read ECONNRESET使用 cron [Scheduler] QueryFailedError: read ECONNRESET 时出现错误
【发布时间】:2021-11-10 07:54:18
【问题描述】:

我有一个手术要在晚上执行

   @Cron(CronExpression.EVERY_DAY_AT_1AM)
  async setValideFileRemainder() {
    var date = new Date();
    let dateToday = date.toISOString().split('T')[0];
    let remainders =  await this.healthFileRepository.find({
      where: { remainder_date: dateToday }})
    for (let file of remainders) {
      file.is_valide = 1; 
      await this.healthFileRepository.save(file);
    }
  }

当我在端点或每 5 分钟测试此功能时,例如它可以工作,但在晚上它总是给我这个错误:

[Nest] 18728   - 09/15/2021, 7:53:52 AM   [Scheduler] QueryFailedError: read ECONNRESET +38765424ms

PS:我使用 MySQL 作为数据库

【问题讨论】:

    标签: mysql cron nestjs typeorm


    【解决方案1】:

    我怀疑您遇到了 MySQL 连接超时,因为您的客户端应用程序处于空闲状态。如果在wait_timeout配置的时间范围内没有活动,MySQL服务器将断开您的客户端。

    您将需要:

    • 调整你的 MySQL 服务器配置并增加wait_timeout
    • 以小于wait_timeout 的间隔向您的服务器发送保持活动查询(例如SELECT 1
    • 优雅地处理连接断开,因为它们可能由于您的应用程序或 SQL 服务器之外的更多原因而发生(例如,路由断开、链接断开、数据包丢失......)

    【讨论】:

    • 我尝试了这些解决方案,谢谢,最后我创建了一个端点来让 cron 执行调用它,它可以正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2021-07-16
    • 2018-10-24
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多