开启定时任务调度器:
set GLOBAL event_scheduler=1;
或者
set GLOBAL event_scheduler=NO;
永久开启定时任务:在my.cnf文件中添加 event_scheduler=ON;
要查看当前是否已开启事件调度器,可执行如下SQL:
SHOW VARIABLES LIKE 'event_scheduler';
或
SELECT @@event_scheduler;
或
SHOW PROCESSLIST;
查看所有事件:
show events;
查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%';
将事件计划开启 : SET GLOBAL event_scheduler = 1;
将事件计划关闭 : SET GLOBAL event_scheduler = 0;
关闭事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
开启事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
查看事件任务 : SHOW EVENTS ;
删除事件任务: DROP event eventName ;
查看是否有开启,方法 show variables like 'event%';定时器的开关是否打开
创建定时任务
DROP EVENT IF EXISTS e_test//
CREATE EVENT e_test
从2015-08-08 01:00:00开始每十秒执行一次
ON SCHEDULE
EVERY 10 second STARTS TIMESTAMP '2015-08-08 01:00:00'
从2013年1月13号0点开始,每天运行一次
ON SCHEDULE
EVERY 1 DAY STARTS ‘2013-01-13 00:00:00’
从现在开始每隔九天定时执行
ON SCHEDULE EVERY 9 DAY STARTS NOW() ;
每个月的一号凌晨1 点执行
on schedule
every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour);
每个季度一号的凌晨1点执行
on schedule
every 1 quarter starts date_add(date_add(date(concat(year(curdate()),’-‘,elt(quarter(curdate()),1,4,7,10),’-‘,1)),interval 1 quarter),interval 1 hour);
每年1月1号凌晨1点执行
on schedule
every 1 quarter starts date_add(date_add(date(concat(year(curdate()),’-‘,elt(quarter(curdate()),1,4,7,10),’-‘,1)),interval 1 quarter),interval 1 hour);
ON COMPLETION PRESERVE
DO //do后面可以跟函数也可以跟存储过程
BEGIN
CALL p_test();
END//
有时需要加上
delimiter // # 将 ; 转为 // 从而不结束
delimiter ; # 再转回 ;
定时任务可以正常执行的条件是event_scheduler定时任务计划开启 即为on或者1