sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor mysql begivenhedsplan ikke virker i databasen localhost?

Se på følgende.

Udsted en select CURRENT_TIMESTAMP; eller

select count(*) as theCount
from customer_group
where is_status=1 and CURRENT_TIMESTAMP >= end_date;

Med andre ord, gør nogle recon. Begivenheder lykkes eller mislykkes lydløst, da de ikke har nogen brugergrænseflade.

Kør nogle kommandoer som:

show variables where variable_name='event_scheduler';

-- i øjeblikket FRA (eller den kunne være TIL)

Angiv starttidspunktet for din begivenhed under oprettelsen, og angiv ON COMPLETION PRESERVE såsom

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 ;

Slå hændelseshåndteringen til:

SET GLOBAL event_scheduler = ON;  -- turn her on and confirm below

Bekræft det:

show variables where variable_name='event_scheduler';

Undersøg status for alle hændelser i en bestemt database efter databasenavn:

show events from stackoverflow; -- note stackoverflow is my database name 

Deaktiver eller aktiver en bestemt begivenhed ved navn i den aktuelt valgte db:

ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;

Og sidst men ikke mindst, når jeg skriver en ny hændelse, tilføjer jeg altid initialt i hændelsessætningerne for at logge til en logtabel (med en insert-sætning og en datetime på now() ). På den måde ved jeg, at det blev udløst, og at data i en where-klausul som din måske ikke giver mig en forkert læsning af det hele.

Og jeg mener, jeg bliver skør over det hele. I første omgang, så afleverer jeg det senere:

    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

Husk for alle praktiske formål (undtagen måske dit bord du virkelig holder af fra dit spørgsmål) ... at EvtsLog af mine er din eneste brugergrænseflade som begivenhedsprogrammør og din bedste ven.

Se på manualsiden for, hvad OM FULDFØRELSESPRESERVE betyder såvel som andre ting.




  1. Hvordan beskytter jeg mit forum mod spam?

  2. JSON_REMOVE() – Fjern data fra et JSON-dokument i MySQL

  3. Får NoSuchMethodError:javax.persistence.Table.indexes() under udførelse af JPA-forespørgsel

  4. Sådan bruges et Oracle Associative Array i en SQL-forespørgsel