Created
May 9, 2017 02:14
-
-
Save OneYX/6773f1dab67244920e9d4eb339cc75cb to your computer and use it in GitHub Desktop.
mysql设置定时任务 -- http://www.cnblogs.com/laowu-blog/p/5073665.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mysql设置定时任务 | |
今天遇到了个需要每天定时执行的任务,在mysql数据库里面提供了这样的功能,正好整理下分享出来。 | |
1.首先检查是否开启了定时任务 | |
1 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%'; | |
2 将事件计划开启 : SET GLOBAL event_scheduler = 1; | |
3 将事件计划关闭 : SET GLOBAL event_scheduler = 0; | |
4 关闭事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE; | |
5 开启事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE; | |
6 查看事件任务 : SHOW EVENTS ; | |
2.创建一个存储过程 | |
1 DELIMITER // | |
2 DROP PROCEDURE IF EXISTS p_test// | |
3 CREATE PROCEDURE p_test() | |
4 BEGIN | |
5 INSERT INTO test(name, create_time) values('testName', now()); | |
6 END// | |
3.设置定时任务调用这个存储过程(从2015.8.8 1点每十秒执行一次) | |
1 DROP EVENT IF EXISTS e_test// | |
2 CREATE EVENT e_test | |
3 ON SCHEDULE EVERY 10 second STARTS TIMESTAMP '2015-08-08 01:00:00' | |
4 ON COMPLETION PRESERVE | |
5 DO | |
6 BEGIN | |
7 CALL p_test(); | |
8 END// | |
备注:在event事件中:ON SCHEDULE 计划任务,有两种设定计划任务的方式: | |
1. AT 时间戳,用来完成单次的计划任务。 | |
2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。 | |
在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。 | |
在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。 | |
提示: 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。 | |
[ON COMPLETION [NOT] PRESERVE] | |
ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment