Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego harmonogram zdarzeń mysql nie działa w bazie danych localhost?

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy sterownik JDBC jest poprawnie zainstalowany i czy można podłączyć DB?

  2. Wyjaśnij MySQL wyjaśnij matematykę planu wykonania, różnica między dwoma planami

  3. Krypta Laravela - Porównanie wartości

  4. Ujawnianie nazwy tabeli i nazw pól w adresie URL żądania

  5. Jak ustawić permalink swojego posta na blogu według daty i tytułu posta?