还加入一些自己在执行过程中遇到的问题和解决方法。
5.1版本以后,MYSQL支持定时执行(event)的功能,就跟linux的crontab差不多。
先查看一下你的MSYQL版本,查询版本信息的SQL语句:
select VERSION()
确定版本支持之后,再查看一下event是否开启:
show variables like ’%sche%’;
如果未开启,那如何开启呢?
show VARIABLES LIKE ’%sche%’;
set global event_scheduler =1;
show VARIABLES LIKE ’%sche%’;
一般定时执行有2种:
1、从具体一个时间点开始,每隔一段时间执行一次;
从现在开始,每30秒执行一次
create event if not exists e_test
on schedule every 30 second starts now()
on completion preserve
do
INSERT into sdb_yoyi (yoyiscid,orderid) VALUES(2,3)
2、从具体一个时间点开始,在当日的某个时间点进行执行;
每个月的一号凌晨1点执行
create event if not exists e_test2
on schedule every 1 month starts DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
on completion preserve
do
INSERT into sdb_yoyi (yoyiscid,orderid) VALUES(2,3)
也可以对事件任务进行关闭:
alter event e_test ON
COMPLETION PRESERVE DISABLE;
对已经关闭的事件任务进行开启:
alter event e_test ON
COMPLETION PRESERVE ENABLE;
我的实践:
我想要的是往test数据库的gpsdemo表定时插入数据:
开始是在MySQL的图形界面输入语句:
create event if not exists e_test
on schedule every 30 second starts now()
on completion preserve
do
INSERT INTO gpsdemo (xxx)values (xxx)
出现错误:
整了一会儿没有解决,还好我机智,直接在命令行输入,如下:
cmd
d:
D:\mysql-5.6.24-win32.1432006610\mysql-5.6.24-win32\bin
进入MySQL的安装路径
mysql -u root -p test
test数据库
password:(输入密码)
create event if not exists e_test
on schedule every 30 second starts now()
on completion preserve
do
INSERT INTO gpsdemo (xxx)values (xxx);(记得这个分号)
OK~~~~完成了!!!
2016.8.12北京,上午天儿有点暗,中午下了场大暴雨,奥运到风味的那小段路被淹没了,分分钟看海的节奏~
还有三天就放假了~啦啦啦~~~