1. 程式人生 > >Mysql定時執行任務實現方法

Mysql定時執行任務實現方法

在開發過程中經常會遇到這樣一個問題:

每天必須定時去執行一條sql語句 或更新或刪除或執行特定的sql語句。

mysql的客戶端工具Navicat for MySQL提供了計劃任務的形式,可以很好地實現該功能,而且也確實可行,比如像定時備份就做的很好。

然而當在執行的語句中包含有中文的時候,卻無法定時執行了。

那麼就想到用mysql的event計劃任務去實現:

要想執行event事件,就必須保證mysql的版本的5.1.6以上,否則會報如下錯誤:



1、要想保證能夠執行event事件,就必須保證定時器是開啟狀態,預設為關閉狀態

setGLOBAL event_scheduler = 1;

或 

setGLOBAL 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

注意:真實的開發環境中,會遇到mysql服務重啟或者斷電的情況,此時則會出現事件排程器被關閉的情況,所有事件都不在起作用,要想解決這個辦法,則需要在mysql.ini檔案中加入event_scheduler = ON; 的語句

參考文獻:http://blog.csdn.net/zhanglifu081022/article/details/12689745



相關推薦

Mysql定時執行任務實現方法

在開發過程中經常會遇到這樣一個問題: 每天必須定時去執行一條sql語句 或更新或刪除或執行特定的sql語句。 mysql的客戶端工具Navicat for MySQL提供了計劃任務的形式,可以很好地實現該功能,而且也確實可行,比如像定時備份就做的很好。 然而當在執行

linux下定時執行任務方法

cnblogs root dream days 分鐘 ab命令 hour 小時 var 在LINUX中你應該先輸入crontab -e,然後就會有個vi編輯界面,再輸入0 3 * * 1 /clearigame2內容到裏面 :wq 保存退出。 在LINUX中,周

Mysql定時執行任務執行批量的sql語句 並且檢視已經生成的定時事件

如果你是5.1後的版本的話,可以用event功能,示例如下: 檢查event功能:  mysql> show variables like '%sche%'; +-----------------+-------+ | Variable_name   | Value

linux下定時執行任務方法 crontab

在LINUX中,週期執行的任務一般由cron這個守護程序來處理[ps -ef|grep cron]。cron讀取一個或多個配置檔案,這些配置檔案中包含了命令列及其呼叫時間。cron的配置檔案稱為“crontab”,是“cron table”的簡寫。一、cron在3個地方查詢

linux下用cron定時執行任務方法

名稱 : crontab 使用許可權 : 所有使用者 使用方式 : crontab file [-u user]-用指定的檔案替代目前的crontab。 crontab-[-u user]-用標準輸入替代目前的crontab. crontab-1[user]-列出

linux下定時執行任務方法 crontab 用法說明

linux下定時執行任務的方法 【非原創,個人網上收集整理了一下】在LINUX中,週期執行的任務一般由cron這個守護程序來處理[ps -ef|grep cron]。cron讀取一個或多個配置檔案,這些配置檔案中包含了命令列及其呼叫時間。cron的配置檔案稱為“crontab

ASP.NET MVC計劃任務實現方法定時執行某個功能)

AR tar 註意 eve 文件 ebr send npr 如何實現 系統中定時執行某個任務是比較常用的功能,如一個部門定期向上級部門上報數據是一個典型的例子,下面就簡單說說在.net mvc中如何實現定時執行某個功能的方法。 1、首先修改Glocal.asax文件,在A

ThinkPHP實現定時執行任務的兩種方法

    $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微軟雅黑"; color: #

springmvc中實現quartz定時任務(每分鐘的第3秒執行任務排程方法

1:實現觸發器,最大的問題是jar包的處理(*.jar定時jar和sourcecodesource code): 此處,最關鍵的jar為第二個,名字最長。 maven依賴: <dependency> <groupId>org.apache

Java定時任務:利用java Timer類實現定時執行任務的功能

lpad 虛擬 觀察 exce 就是 set ring 構造 trac 一、概述 在java中實現定時執行任務的功能,主要用到兩個類,Timer和TimerTask類。其中Timer是用來在一個後臺線程按指定的計劃來執行指定的任務。 TimerTask一個抽象類,它的子類代

PHP定時執行任務的3種方法詳解

round 利用 淮北 執行 多線程 href 等待 無限 exec 轉載 https://www.jb51.net/article/76720.htm 更新時間:2015年12月21日 10:38:56 作者:PHP淮北 我要評論PHP不支持多線程,有時候處理問

基於MVC 的Quartz.Net組件實現定時執行任務調度

創建 .get 關系 成了 star +++ rep 清除 pub 新建mvc項目之後,首先引用Quartz組件。工具-->NuGet包管理器-->管理解決方案的 NuGet包管理器 組件安裝完成。 Quartz.Net一個最簡單任務至少包括三部分實現:

使用AlarmManager實現Android應用每天定時執行任務

介紹 android官方文件:AlarmManager 在Android平臺,除了使用AlarmManger外,還可以使用Timer或者Handler來實現定時任務,但這兩種方式定時並不會太準確;因此如果我們需要實現精準定時任務,使用AlarmManger更

android使用AlarmManager實現應用每天定時執行任務

簡介: 關於service 大家應都知道是Android 四大元件之一,用來執行後臺任務的。 Android 中的定時任務一般有兩種實現方式,一種是使用Java API 裡提供的Timer 類,一種是使用Android 的Alarm 機制。 那麼首先我們來

javaWeb監聽器結合定時實現定時執行任務

java監聽器 通過監聽器可以自動的激發一些操作,比如監聽線上人數; 監聽器介面有: ServletContextListener——監聽ServletContext物件; HttpSessionL

mysql定時執行某一儲存過程,並實現mysql資料庫的定時備份

mysql儲存過程 1、儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。 語法:CREATE PROCEDURE  過程名([[IN|OU

linux下定時執行任務方法

  (1)at命令   假如我們只是想 要讓特定任務執行一次,那麼,這時候就要用到at監控程式了。   設定at命令很簡單,指示定執行的時間,那麼就會在哪個時候執行。at類似列印 程序,會把任務放到/var/spool/at目錄中,到指定時間執行它 。at命令相當

定時任務實現方法總結與分析

上次熟悉了MarkDown的用法之後,由於各種原因一直沒有時間更新部落格。。。這次打算把我之前總結的一些東西陸陸續續的寫在部落格裡,希望下次用到的時候能夠快速記起來~ —————————————華麗的分割線——————————————– 1 定時任務簡介

Java—實現每天定時執行任務

1、定義TimerManager類 import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * java定時任務,每天定時執行任務 * @

使用ASP.NET實現Windows Service定時執行任務

我們怎樣才能在伺服器上使用asp.NET定時執行任務而不需要安裝windows service?我們經常需要執行一些維護性的任務或者像傳送提醒郵件給使用者這樣的定時任務。這些僅僅通過使用Windows Service就可以完成。Asp.Net通常是一個無狀態的提供