Kijk naar het volgende.
Geef een select CURRENT_TIMESTAMP;
of
select count(*) as theCount
from customer_group
where is_status=1 and CURRENT_TIMESTAMP >= end_date;
Met andere woorden, doe wat verkenning. Gebeurtenissen slagen of mislukken stil omdat ze geen gebruikersinterface hebben.
Voer enkele opdrachten uit zoals:
show variables where variable_name='event_scheduler';
-- momenteel UIT (of het kan AAN zijn)
Specificeer de starttijd voor uw evenement tijdens het maken, en specificeer ON COMPLETION PRESERVE
zoals
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 ;
Zet de gebeurtenis-handler aan:
SET GLOBAL event_scheduler = ON; -- turn her on and confirm below
Bevestig het:
show variables where variable_name='event_scheduler';
Bekijk de status van alle gebeurtenissen in een bepaalde database op databasenaam:
show events from stackoverflow; -- note stackoverflow is my database name
Schakel een bepaalde gebeurtenis op naam in of uit in de huidige geselecteerde database:
ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;
En last but not least, als ik een nieuwe gebeurtenis schrijf, voeg ik altijd eerst in de gebeurtenisverklaringen toe om in een logtabel te loggen (met een insert-instructie en een datetime van now()
). Op die manier weet ik dat het is geactiveerd en dat gegevens in een waar-clausule zoals die van jou me misschien geen verkeerde lezing geven van het hele ding.
En ik bedoel, ik word overal gek. Aanvankelijk leg ik het later uit:
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
Onthoud voor alle praktische doeleinden (behalve misschien uw tafel waar u echt om geeft van uw vraag) ... dat EvtsLog
van mij is je enige gebruikersinterface als Evenementenprogrammeur en je beste vriend.
Kijk op de handleiding pagina voor wat OP VOLTOOIING BEHOUD betekent evenals andere dingen.