目前在项目中遇到了,有需求在每天/每周/每月分别重置对应的数据,我在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;,为了防止服务器重启全局控制失效