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事件語法格式:

<pre name="code" class="sql">CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
 
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
 
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
            WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
            DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

例如:
-- 設置時區並設置計劃事件調度器開啓,也可以 event_scheduler = ON

set time_zone = '+8:00';
set GLOBAL event_scheduler = 1;
 
-- 設置該事件使用或所屬的數據庫base數據庫
use test;
 
# 如果原來存在該名字的任務計劃則先刪除
drop event if exists upload_to_sdmp;
 
# 設置分隔符爲 '$$' ,mysql默認的語句分隔符爲 ';' ,這樣在後續的 create 到 end 這段代碼都會看成是一條語句來執行
DELIMITER $$
# 創建計劃任務,設置第一次執行時間爲'2014-07-30 10:00:00',並且每天執行一次
create event upload_to_sdmp 
on schedule every 1 day starts timestamp '2014-07-30 10:00:00'
#on schedule every 1 SECOND
do
 
# 開始該計劃任務要做的事
begin
 
 
-- do something 編寫你的計劃任務要做的事
    INSERT aaa VALUES (3,'222');
    INSERT aaa VALUES (2,'222');
 
-- 結束計劃任務
end $$
 
# 將語句分割符設置回 ';'
DELIMITER ;

4、查詢事件的運行狀態

修改事件語法格式:

ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]


5、關閉\打開事件:

關閉事件:
ALTER EVENT upload_to_sdmp DISABLE;
開啓事件:
ALTER EVENT upload_to_sdmp ENABLE;  

6、查詢事件是否開啓
select * from mysql.event


原文:https://blog.csdn.net/zlp5201/article/details/38309095 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章