新聞中心
如何寫mysql的定時任務(wù)
mysql的定時任務(wù)一般用event(事件)來完成,觸發(fā)器無法完成。
成都創(chuàng)新互聯(lián)是專業(yè)的蒲城網(wǎng)站建設(shè)公司,蒲城接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行蒲城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
一、通過mysql的命令行客戶端來完成
1、set global event_scheduler =1; //開啟event_scheduler
執(zhí)行這個語句如果出現(xiàn),可在mysql的配置文檔中設(shè)置[mysqld]段中添加 event_scheduler=ON
如果重啟mysql;這種情況下依然出錯,Error Code: 1290. The MySQL server is running with the --event-scheduler=DISABLED
or --skip-grant-tables option so it cannot execute this statement,這個錯誤是說啟動服務(wù)器時如果指定了--skip-grant-tables選項(xiàng),則event_scheduler則自動被設(shè)置為DISABLED。命令行或配置文件的設(shè)置都會被覆蓋。建議重現(xiàn)安裝mysql或是修改啟動參數(shù)(在系統(tǒng)服務(wù)中指定)。
查看event_scheduler狀態(tài):show status like '%event%'; 或SELECT @@event_scheduler;
2、CREATE PROCEDURE Mypro() //創(chuàng)建存儲過程
BEGIN
update userinfo SET endtime = now() WHERE id = '155';
END;
3、創(chuàng)建event My_enevt,每隔三十秒執(zhí)行一次
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call Mypro();
4、關(guān)閉事件
alter event e_test ON COMPLETION PRESERVE DISABLE;
5、開啟事件
alter event e_test ON COMPLETION PRESERVE ENABLE;
語法:
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}
求教,mysql的event每天定時執(zhí)行,不能執(zhí)行成功的問題
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進(jìn)行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時在進(jìn)行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進(jìn)行檢測時把MySQL服務(wù)器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時MySQL服務(wù)器必須沒有啟動!檢測修復(fù)所有數(shù)據(jù)庫(表)
mysql 中如何定時處理
建一個批處理,計劃任務(wù)定時運(yùn)行批處理。
批處理如下:
mysql -u用戶名 -p密碼 所需執(zhí)行語句.sql 返回的結(jié)果.txt
如何在Mysql下指定時間內(nèi)執(zhí)行定時任務(wù)
最常用的做法是使用UNIX的cron直接執(zhí)行Java程序。
并不需要在Java做的那么復(fù)雜。
Windows服務(wù)器也有類似于cron的任務(wù)管理功能,同理
---------------------------
Tomcat不是用來管理定時任務(wù)的,如果沒有HTTP請求,Servlet是不會被執(zhí)行的。
建議lz把定期執(zhí)行的處理做成一個獨(dú)立的Java程序,用cron執(zhí)行。
如果不想寫?yīng)毩⒌腏ava程序,也可以用cron定期向Tomcat發(fā)送Http請求,但是,這樣做的話注意程序處理時間不能太長,因?yàn)镠TTP通信有timeout的制約。
mysql怎么讓一個存儲過程定時執(zhí)行
具體怎么用我不清楚,事件是相當(dāng)于mssql的作業(yè)
下面是調(diào)用存儲過程
delimiter //
drop procedure if exists up_t1;
create procedure up_t1()
begin
select 'hello world';
end
;
create procedure up_t2()
begin
call up_t1();
select 'hello world2 ';
end;
//
navicate怎么在mysql的定時事務(wù)開啟
1、啟動Navicat for MySQL,新建數(shù)據(jù)庫連接,打開數(shù)據(jù)庫,可能有點(diǎn)啰嗦。
2、可以先查看定時任務(wù)的是否開啟。通過以下命令:show variables like '%sche%';
3、如果其設(shè)置值為為 OFF 或 0 ,通過執(zhí)行下列語句,來開啟event_scheduler,set global event_scheduler =1,把設(shè)置為設(shè)為ON 或 1。
4、新建一個函數(shù) ,取名為update_qiandao ,內(nèi)容為 ?UPDATE week7_user SET isqiandao = 0
5、參照上圖,新建一個事件 ?,在定義里寫 call update_qiandao() ?--也就是之前定義的函數(shù)
在“計劃”選項(xiàng)卡中設(shè)置 執(zhí)行時間,這里我選擇的是每天。
6、完成結(jié)束
本文名稱:mysql定時執(zhí)行怎么用,mysql 定時執(zhí)行
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/hcshjs.html