目前在项目中遇到了,有需求在每天/每周/每月分别重置对应的数据,我在MySql数据库中新建了如下Event

CREATE 
    DEFINER = 'root'@'%'
EVENT `Test`.`ResetTest`
    ON SCHEDULE EVERY '1' DAY
    STARTS '2020-03-25 00:00:00'
    DO 
BEGIN
    update user set `day_score` = 0,`day_card` = 0;
END;

ALTER EVENT `Test`.`ResetTest` ENABLE

  但是第二天我发现这个Event并没有按照我想要的执行,于是我将定时器改为了没分钟执行一次测试发现也没有执行.

CREATE 
    DEFINER = 'root'@'%'
EVENT `Test`.`ResetTest`
    ON SCHEDULE EVERY '1' MINUTE
    STARTS '2020-03-25 00:00:00'
    DO 
BEGIN
    update user set `day_score` = 0,`day_card` = 0;
END;

ALTER EVENT `Test`.`ResetTest` ENABLE

  于是我在想是不是还有什么MySql需要设置,上网查了下果不其然,原来虽然SQL语句启用了Event,但是还有一个全局event开关需要打开,打开方式见下

# 打开全局event状态
SET GLOBAL event_scheduler=on;
# 查看event控制状态
SHOW VARIABLES LIKE 'event_scheduler';

  最后最好在mysql的配置文件my.conf中设置SET GLOBAL event_scheduler=on;,为了防止服务器重启全局控制失效