请教:如何配置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
相关产品推荐
相关产品推荐

