mysql event执行记录_mysql event建立模板(可记录执行履历)
建立履歷記錄表
CREATE?TABLE?`mysql`.`t_event_history`?(
`dbname`?VARCHAR(128)?NOT?NULL?DEFAULT?'',
`eventname`?VARCHAR(128)?NOT?NULL?DEFAULT?'',
`starttime`?DATETIME?NOT?NULL?DEFAULT?'0000-00-00?00:00:00',
`endtime`?DATETIME?DEFAULT?NULL,
`issuccess`?INT(11)?DEFAULT?NULL,
`duration`?INT(11)?DEFAULT?NULL,
`errormessage`?VARCHAR(512)?DEFAULT?NULL,
`randno`?INT(11)?DEFAULT?NULL,
PRIMARY?KEY?(`dbname`,`eventname`,`starttime`),
KEY?`ix_endtime`?(`endtime`),
KEY?`ix_starttime_randno`?(`starttime`,`randno`)
)?ENGINE=INNODB?DEFAULT?CHARSET=utf8;
2.event 建立模板
DELIMITER?$$
CREATE?DEFINER=`root`@`localhost`?EVENT?`job_update_status`?ON?SCHEDULE
#修改以下調度信息
EVERY?5?minute?STARTS?now()?ON?COMPLETION?PRESERVE?ENABLE?DO
BEGIN
DECLARE?r_code?CHAR(5)?DEFAULT?'00000';
DECLARE?r_msg?TEXT;
DECLARE?v_error?INTEGER;
DECLAREv_starttime?DATETIME?DEFAULT?NOW();
DECLARE?v_randno?INTEGER?DEFAULT?FLOOR(RAND()*100001);
INSERT?INTO?mysql.t_event_history?(dbname,eventname,starttime,randno)
#修改下面的作業名(該作業的名稱)
VALUES(DATABASE(),'job_update_status',?v_starttime,v_randno);
BEGIN
#異常處理段
DECLARE?CONTINUE?HANDLER?FOR?SQLEXCEPTION
BEGIN
SET??v_error?=?1;
GET?DIAGNOSTICS?CONDITION?1?r_code?=?RETURNED_SQLSTATE?,?r_msg?=?MESSAGE_TEXT;
END;
#此處為實際調用的用戶程序過程
CALL?automaintain.pro_update_status();
END;
UPDATE?mysql.t_event_history?SET?endtime=NOW(),issuccess=ISNULL(v_error),duration=TIMESTAMPDIFF(SECOND,starttime,NOW()),?errormessage=CONCAT('error=',r_code,',?message=',r_msg),randno=NULL?WHERE?starttime=v_starttime?AND?randno=v_randno;
END$$
DELIMITER?;
3.查詢event
select * from mysql.event;
總結
以上是生活随笔為你收集整理的mysql event执行记录_mysql event建立模板(可记录执行履历)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql clob转string_Ja
- 下一篇: ubuntu mysql 5.7 出错_