会员登录 | 注册会员 | 学习交流 | 会员中心 | 在线充值 | QQ在线咨询
扫一扫添加微信咨询
咨询电话:199-4385-7008
在线客服:
本站主要提供AICS6、PSCS6、CDRX6、DWCS6、html、CSS样式、js脚本、ASP、PHP等视频教程,近期隆重推出平面设计、网页设计视频教程套装,在线学习结合视频光盘/U盘,是您成为设计大师的必经之路!
您所在的位置:首页 >> 学习辅导 >> 在Mysql数据库中定时执行任务实现方法

学习辅导

在Mysql数据库中定时执行任务实现方法

发布时间:2017-03-29 17:53:50 来源: 点击数:2472
摘要:在开发过程中经常会遇到这样一个问题:每天必须定时去执行一条sql语句 或更新或删除或执行特定的sql语句。 MySQL的客户端工具Navicat for MySQL提供了计划任务的形式,可以很好地实现该功能,而且也确实可行,比如像定时备份就做的很好。

mysql定时执行任务实现方法

在开发过程中经常会遇到这样一个问题: 
每天必须定时去执行一条sql语句 或更新或删除或执行特定的sql语句。 
mysql的客户端工具navicat for mysql提供了计划任务的形式,可以很好地实现该功能,而且也确实可行,比如像定时备份就做的很好。 
然而当在执行的语句中包含有中文的时候,却无法定时执行了。 
那么就想到用mysql的event计划任务去实现: 
要想执行event事件,就必须保证mysql的版本的5.1.6以上,否则会报如下错误: 
1、要想保证能够执行event事件,就必须保证定时器是开启状态,默认为关闭状态 
set global event_scheduler = 1; 
或  
set global event_scheduler = on;  
要查看当前是否已开启事件调度器,可执行如下sql: 
show variables like ’event_scheduler’ 

2、如果原来存在该名字的任务计划则先删除   
drop event if exist upload_to_sdmp; 
3、执行事件 
event事件语法格式: 
[sql] view plain copy print?
01.<pre name="code" class="sql">create event [if not exists] event_name 
02.on schedule schedule 
03.[on completion [not] preserve] 
04.[enable | disable] 
05.[comment ’comment’] 
06.do sql_statement; 
07. 
08.schedule: 
09.at timestamp [+ interval interval] 
10.| every interval [starts timestamp] [ends timestamp] 
11. 
12.interval: 
13.quantity {year | quarter | month | day | hour | minute | 
14.            week | second | year_month | day_hour | day_minute | 
15.            day_second | hour_minute | hour_second | minute_second} 

 例如:
-- 设置时区并设置计划事件调度器开启,也可以 event_scheduler = on 
[sql] view plain copy print?
01.set time_zone = ’+8:00’; 
02.set global event_scheduler = 1; 
03. 
04.-- 设置该事件使用或所属的数据库base数据库 
05.use test; 
06. 
07.# 如果原来存在该名字的任务计划则先删除 
08.drop event if exists upload_to_sdmp; 
09. 
10.# 设置分隔符为 ’$$’ ,mysql默认的语句分隔符为 ’;’ ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行 
11.delimiter $$ 
12.# 创建计划任务,设置第一次执行时间为’2014-07-30 10:00:00’,并且每天执行一次 
13.create event upload_to_sdmp  
14.on schedule every 1 day starts timestamp ’2014-07-30 10:00:00’ 
15.#on schedule every 1 second 
16.do 
17. 
18.# 开始该计划任务要做的事 
19.begin 
20. 
21. 
22.-- do something 编写你的计划任务要做的事 
23.    insert aaa values (3,’222’); 
24.    insert aaa values (2,’222’); 
25. 
26.-- 结束计划任务 
27.end $$ 
28. 
29.# 将语句分割符设置回 ’;’ 
30.delimiter ;   
4、查询事件的运行状态 
修改事件语法格式: 
[sql] view plain copy print?
01.alter event event_name 
02.[on schedule schedule] 
03.[rename to new_event_name] 
04.[on completion [not] preserve] 
05.[comment ’comment’] 
06.[enable | disable] 
07.[do sql_statement] 

5、关闭打开事件: 
[sql] view plain copy print?
01.关闭事件: 
02.alter event upload_to_sdmp disable; 
[sql] view plain copy print?
01.开启事件: 
02.alter event upload_to_sdmp enable;   

6、查询事件是否开启 
[sql] view plain copy print?
01.select * from mysql.event 
注意:真实的开发环境中,会遇到mysql服务重启或者断电的情况,此时则会出现事件调度器被关闭的情况,所有事件都不在起作用,要想解决这个办法,则需要在mysql.ini文件中加入event_scheduler = on; 的语句

热门推荐

客服热线(8:00-23:00)

133 4385 7008

在线QQ客服:3316841367 张老师
微信账号:laozhangsoft123

微信公众号