Я пытаюсь выяснить, что произойдет, если событие не удалось, это мое событие 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;
, workbench не будет отображать никаких ошибок, но он также не выполнит запрос.
Обновление 2: Измененные линии insert ... 'unknown')
к insert ... 'unknown');
, добавлено ;
в конце строки. Запрос теперь работает, но им получить другую ошибку: Error Code: 1319. Undefined CONDITION: EXCEPTION
пытался END $$ и не работает ни пытался END; без $$ и запрос не будет запущен – Alpha2k
Какое сообщение об ошибке вы получили, когда вы только положили END $$? Вы также помещаете DELIMITER; выше этого права?, я скоро отредактирую свой ответ – Nighthunter22
Отсутствует точка с запятой – Alpha2k