本文主要轉自 http://www.2cto.com/database/201202/120821.html
還加入一些自己在執行過程中遇到的問題和解決方法。
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北京,上午天兒有點暗,中午下了場大暴雨,奧運到風味的那小段路被淹沒了,分分鐘看海的節奏~
還有三天就放假了~啦啦啦~~~