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

请教:如何配置MySQL Event实现每周日每小时执行一次任务?

MySQL事件调度:配置每周日每小时执行的任务

你当前的SQL设置的是每周执行一次,不符合每小时执行的需求,我帮你调整成符合要求的配置:

首先要确保MySQL的事件调度器处于开启状态,先执行以下命令检查:

SHOW VARIABLES LIKE 'event_scheduler';

如果结果显示Value为OFF,执行以下命令开启(临时生效,永久生效需要修改my.cnf配置文件添加event_scheduler=ON):

SET GLOBAL event_scheduler = ON;

接下来是正确的事件创建语句:

CREATE EVENT event_forEverysundayeveryhour
ON SCHEDULE EVERY 1 HOUR
STARTS TIMESTAMP(CURRENT_DATE + INTERVAL (6 - WEEKDAY(CURRENT_DATE)) DAY, '00:00:00')
ON COMPLETION PRESERVE
DO
BEGIN
    -- 在这里编写你的任务逻辑,示例:
    -- INSERT INTO operation_log (execute_time) VALUES (NOW());
    
    -- 可选:添加周日判断,避免因异常触发导致非周日执行
    IF WEEKDAY(NOW()) = 6 THEN
        -- 你的核心任务代码
    END IF;
END;

代码说明:

  • EVERY 1 HOUR:指定事件每小时执行一次
  • STARTS:计算出本周日的0点作为首次执行的起始时间,WEEKDAY()函数返回0代表周一,6代表周日,通过6 - WEEKDAY(CURRENT_DATE)算出距离本周日的天数,结合当前日期得到周日的日期,再拼接00:00:00确定起始时间
  • ON COMPLETION PRESERVE:确保事件执行完成后不会被自动删除,会持续每周重复执行
  • 额外的IF WEEKDAY(NOW()) = 6判断:作为兜底机制,防止事件因服务器延迟等意外情况在非周日触发时执行不必要的操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:14:58