You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB定时事件未按预期设为RECURRING类型的问题排查

MariaDB定时事件调度不符合预期:ONE TIME而非RECURRING问题解决

问题场景

已确认event_scheduler参数已开启为ON,创建定时事件后,执行SHOW EVENTS\G查询发现事件类型为ONE TIME,而非预期的RECURRING。

原创建语句:

CREATE EVENT DeleteExpiredTokens
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
    ON COMPLETION PRESERVE
    DO
    DELETE LOW_PRIORITY
    FROM database.remembertokens
    WHERE set_time < DATE_SUB(NOW(), INTERVAL 30 DAY);

查询结果:

*************************** 1. row ***************************
                  Db: database
                Name: DeleteExpiredTokens
             Definer: root@localhost
           Time zone: SYSTEM
                Type: ONE TIME
          Execute at: 2023-01-11 13:03:33
      Interval value: NULL
      Interval field: NULL
              Starts: NULL
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_general_ci
1 row in set (0.001 sec)

曾尝试修改my.cnf相关配置,问题依旧。

问题原因

原语句中ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY是一次性事件的语法,只会在指定的单个时间点执行一次,因此事件类型被识别为ONE TIME,无法实现重复调度的需求。

解决方法

使用EVERY关键字定义重复执行的时间间隔,配合STARTS指定任务开始执行的时间,修改后的语句如下:

CREATE EVENT DeleteExpiredTokens ON SCHEDULE EVERY 1 DAY
    STARTS CURRENT_TIMESTAMP
    ON COMPLETION PRESERVE
    DO
    DELETE LOW_PRIORITY
    FROM database.remembertokens
    WHERE set_time < DATE_SUB(NOW(), INTERVAL 30 DAY);

内容的提问来源于stack exchange,提问作者Razeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:00:49