Programación de eventos de MySQL
Frecuentes
Visto 831 veces
2
Tengo un evento MySQL programado para ejecutarse todos los días a la medianoche, pero el servidor de la base de datos se apaga todos los días por la noche y se reinicia todas las mañanas, pero no necesariamente a la misma hora. Por ejemplo, el servidor se inicia a las: 10 a. m., todavía necesito que el evento se ejecute ese día, aunque estaba programado para las 12 a. m. Probé este escenario en ORACLE y funciona, pero no en MySQL. ¿Tienes una sugerencia?
Gracias de antemano, Abhilash.
3 Respuestas
2
El soporte directo para este comportamiento se envió como una solicitud de función en error # 46813. Todavía está "en espera de triaje":
El programador de eventos debe poder verificar periódicamente y ponerse al día con los eventos perdidos. Si bien los eventos que deben ejecutarse de esta manera se pueden programar mediante el Programador de tareas en Windows y anacron en Mac y *nix, esto no es elegante y depende de la plataforma.
Como sugiere el informe de error, puede programar dichos eventos utilizando un software externo a MySQL. Alternativamente, uno podría usar MySQL init-file
opción para especificar un archivo que contiene comandos que deben ejecutarse al inicio; usando eso uno podría verificar el INFORMATION_SCHEMA.EVENTS
tabla: comparar LAST_EXECUTED
columna contra el calendario de eventos y ejecutar EVENT_DEFINITION
si se perdió un evento programado.
Respondido 28 ago 12, 08:08
¿Esta función ya está implementada? Lo probé usando solo localhost, y parece ponerse al día con los eventos perdidos. Sin embargo, no puedo ver ninguna documentación que pruebe esto. Incluso el enlace provisto aquí todavía tiene un estado de 'Verificado', cuando esperaba que estuviera 'Cerrado'. - Sabio satélite
0
Lo siento, pero MySQL no maneja esto. Si se pierde el evento, se pierde. No intenta ejecutarlo de nuevo más tarde.
Lo que podría hacer es crear una tabla que registre cuándo se ejecutó por última vez un evento (la fecha), luego programarlo para cada hora, pero antes de ejecutar, verifique si ya se ejecutó ese día. De esa manera, la primera vez que se ejecuta después de la medianoche, se activará.
Respondido 28 ago 12, 08:08
0
Puede crear un evento que se active cada hora. Cree una tabla adicional para almacenar información sobre el disparo del evento.
Realice estos pasos en el evento:
- compruebe si se disparó el evento - lea la información. de la mesa
- haga el código si el evento todavía no se disparó, escriba información (la fecha) en la tabla.
Respondido 28 ago 12, 09:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql or haz tu propia pregunta.
y qué código/comandos ha escrito para lograr esto - Satya
Por favor, proporcione su código aquí. - JDGuide