我試圖找出什麼發生,如果一個事件失敗檢索錯誤,這是我的事件SQL:失敗事件
DELIMITER $$
CREATE EVENT IF NOT EXISTS `cdr2015_daily_update`
ON SCHEDULE EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 3 HOUR)
DO
BEGIN
DECLARE EXIT HANDLER FOR MYSQLEXCEPTION, MYSQLWARNING
BEGIN
insert into events_state values ('cdr2015_daily_update', 'true', now(), 'unknown', 'unknown')
END;
insert into
cdr2015_v2 (clid, src, dst, dcontext, channel, dstchannel)
select
calldate, clid, src, dst, dcontext, channel, dstchannel
from cdr where DATE_FORMAT(calldate, '%Y-%m-%d') = subdate(current_date, 1); -- yesterday calls
END; $$
DELIMITER ;
每天03:00不前一天電話的備份。此事件將無法確定,但我想知道的錯誤,是這樣的:
`Error Code: 1136. Column count doesn't match value count at row 1` , is it possible to catch this error and insert it into another table?
這是events_state表:
CREATE TABLE `events_state` (
`event` varchar(255) DEFAULT NULL,
`failed` varchar(255) DEFAULT NULL,
`fail_date` datetime,
`reason1` varchar(255) DEFAULT NULL,
`reason2` varchar(255) DEFAULT NULL,
`RID` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`RID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
現在事件被插入這樣的:
insert into events_state values ('cdr2015_daily_update', 'true', now(), 'unknown', 'unknown')
它可以改變成這樣的東西?
insert into events_state values ('cdr2015_daily_update', 'true', now(), MYSQLEXCEPTION, MYSQLWARNING)
我也無法管理運行此事件,因爲我在兩個END;
收到錯誤,這裏是從MySQL-工作臺一些截圖:
更新:試圖更改第二個END
從END; $$
到END;
,工作臺不會顯示任何錯誤,但它不會運行查詢。
更新2:變更線insert ... 'unknown')
到insert ... 'unknown');
,在線路的一端加入;
。查詢現在運行,但即時得到另一個錯誤:Error Code: 1319. Undefined CONDITION: EXCEPTION
試圖END $$和不工作沒有,試過END;沒有$$,查詢也不會運行 – Alpha2k
當你只放END $$時,你得到的錯誤信息是什麼?你也將DELIMITER;以上是嗎?我馬上編輯我的答案 – Nighthunter22
缺少分號 – Alpha2k