mysql定时任务调用存储过程定时执行

mysql的定时事件可以设定在某个时间自动执行步骤如下:
注:如果是不知道如何创建存储过程,请查看我的上一篇博文
mysql定时任务调用存储过程定时执行_第1张图片
mysql定时任务调用存储过程定时执行_第2张图片
mysql定时任务调用存储过程定时执行_第3张图片
查看定时器是否开启:

show variables like 'event_scheduler'; 

查询结果如下:
mysql定时任务调用存储过程定时执行_第4张图片
此时说明没有开启,开启方法如下:
由于我是mysql装在linux上,在操作的过程遇到一个问题:
如下:

ERROR bai9 (HYdu): The MySQL server is running with the --skip-grant-tables option so i cannot execute this statement
-- 第一打到 my.cnf文件
vim etc/my.cnf
-- 按i进行编辑功能,注释掉skip-grant-tables
# skip-grant-tables
--添加 event_scheduler=ON
event_scheduler=ON
-- 按esc > :wq保存退出
-- 重启mysql
service mysqld stop
service mysqld start
--重新查询
show variables like 'event_scheduler'; 

结果如下:
mysql定时任务调用存储过程定时执行_第5张图片

以下两种写法可以进行测试:

# 当前时间后一分钟开始执行,每隔30秒执行一次,可以用这个来进行测试
DROP EVENT IF EXISTS event_remind_month_1 ;	
CREATE EVENT `event_remind_month_1`	-- 创建名字为user_event的事件
ON SCHEDULE EVERY 30 SECOND STARTS DATE_ADD(now(), INTERVAL 1 MINUTE)  
ON COMPLETION NOT PRESERVE
ENABLE
DO call pro_remind_month(1, @result) ;
# 次日凌晨1点开始执行,每隔一天的凌晨1点执行一次
-- 先删除事件
DROP EVENT IF EXISTS event_remind_month_2 ;	
CREATE EVENT `event_remind_month_2`	-- 创建名字为user_event的事件
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR) -- 每隔一天执行一次,开始执行时间为明天凌晨1点整
ON COMPLETION NOT PRESERVE
ENABLE
DO   call pro_remind_month(1, @result) ;

你可能感兴趣的:(mysql,mysql定时任务,数据库,mysql,java,linux)