Spójrz na następujące.
Wydaj select CURRENT_TIMESTAMP;
lub
select count(*) as theCount
from customer_group
where is_status=1 and CURRENT_TIMESTAMP >= end_date;
Innymi słowy, zrób rekonesans. Zdarzenia kończą się pomyślnie lub kończą się niepowodzeniem po cichu, ponieważ nie mają interfejsu użytkownika.
Uruchom kilka poleceń, takich jak:
show variables where variable_name='event_scheduler';
-- obecnie WYŁĄCZONE (lub może być WŁĄCZONE)
Określ czas rozpoczęcia wydarzenia podczas tworzenia i określ ON COMPLETION PRESERVE
takie jak
drop event if exists `Every_5_Minutes_QuestionUpdateImport`;
DELIMITER $$
CREATE EVENT `Every_5_Minutes_QuestionUpdateImport`
ON SCHEDULE EVERY 5 MINUTE STARTS '2015-09-01 00:00:00'
ON COMPLETION PRESERVE
DO BEGIN
--
-- all your statements go here
--
END$$
DELIMITER ;
Włącz obsługę zdarzeń:
SET GLOBAL event_scheduler = ON; -- turn her on and confirm below
Potwierdź to:
show variables where variable_name='event_scheduler';
Sprawdź stan wszystkich zdarzeń w określonej bazie danych według nazwy bazy danych:
show events from stackoverflow; -- note stackoverflow is my database name
Wyłącz lub włącz określone zdarzenie według nazwy w aktualnie wybranej bazie danych:
ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;
I wreszcie, kiedy piszę nowe zdarzenie, zawsze dodaję początkowo w instrukcjach zdarzeń, aby zalogować się do tabeli dziennika (z instrukcją INSERT i datą i godziną now()
). W ten sposób wiem, że to zostało uruchomione, a dane w klauzuli WHERE, takiej jak twoja, być może nie dają mi błędnych odczytów.
I mam na myśli, że wariuję wszędzie. Na początku, potem rem to później:
set filename:=concat('c:\\datavault\\stackoverflow\\app01\\batches\\processMe_',LPAD(@idToPerform, 8, '0'),'.txt');
set logMsg:=concat("It would appear I am to process this thing: ",filename);
insert EvtsLog(incarnationId,evtName,step,debugMsg,dtWhenLogged)
select incarnationId,evtAlias,10,logMsg,now(); -- 10: some step somewhere in the middle
Pamiętaj ze względów praktycznych (z wyjątkiem być może tabeli, na której naprawdę Ci zależy z pytania) ... że EvtsLog
mój jest twoim jedynym interfejsem użytkownika jako programisty wydarzeń i twoim najlepszym przyjacielem.
Spójrz na stronę podręcznika, aby dowiedzieć się, co PO ZACHOWANIU ZAKOŃCZENIA oznacza, jak również inne rzeczy.