Ho questa stored procedure. Come posso eseguire questo ad esempio con intervalli di 5 secondi? Come una routine per eliminare i dati con una data e ora maggiore di un giorno?
DROP PROCEDURE IF EXISTS `delete_rows_links` GO CREATE PROCEDURE delete_rows_links BEGIN DELETE activation_link FROM activation_link_password_reset WHERE TIMESTAMPDIFF(DAY, `time`, NOW()) < 1 ; END GO
Puoi usare mysql scheduler per eseguirlo ogni 5 secondi. Puoi trovare esempi su http://dev.mysql.com/doc/refman/5.1/en/create-event.html
Mai usato, ma spero che questo funzioni:
CREATE EVENT myevent ON SCHEDULE EVERY 5 SECOND DO CALL delete_rows_links();
Ho usato questa query e ha funzionato per me:
CREATE EVENT `exec` ON SCHEDULE EVERY 5 SECOND STARTS '2013-02-10 00:00:00' ENDS '2015-02-28 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call delete_rows_links();
Per creare un cronjob, segui questi passaggi:
eseguire questo comando: SET GLOBAL event_scheduler = ON;
Se ERRORE 1229 (HY000): La variabile ‘event_scheduler’ è una variabile GLOBAL e deve essere impostata con SET GLOBAL: mportante
È ansible impostare l’Event Scheduler su DISABLED solo all’avvio del server. Se event_scheduler è ON o OFF, non è ansible impostarlo su DISABLED in fase di runtime. Inoltre, se l’Event Scheduler è impostato su DISABLED all’avvio, non è ansible modificare il valore di event_scheduler in fase di runtime.
Per disabilitare lo scheduler degli eventi, utilizzare uno dei seguenti due metodi:
Come opzione da riga di comando all’avvio del server:
--event-scheduler=DISABLED
Nel file di configurazione del server (my.cnf o my.ini su sistemi Windows): includere la riga in cui verrà letta dal server (ad esempio, in una sezione [mysqld]):
event_scheduler=DISABLED
Leggi la documentazione di MySQL per maggiori informazioni.
DROP EVENT IF EXISTS EVENT_NAME; CREATE EVENT EVENT_NAME ON SCHEDULE EVERY 10 SECOND/minute/hour DO CALL PROCEDURE_NAME();
Se si è aperti a una soluzione fuori dal DB: è ansible impostare un processo cron che esegua uno script che chiamerà esso stesso la procedura.