Programación de eventos de MySQL

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.

preguntado el 28 de agosto de 12 a las 08:08

y qué código/comandos ha escrito para lograr esto -

Por favor, proporcione su código aquí. -

3 Respuestas

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

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

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 or haz tu propia pregunta.