sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué el programa de eventos mysql no funciona en la base de datos localhost?

Mira lo siguiente.

Emita un select CURRENT_TIMESTAMP; o

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

En otras palabras, haz algo de reconocimiento. Los eventos tienen éxito o fallan en silencio ya que no tienen interfaz de usuario.

Ejecute algunos comandos como:

show variables where variable_name='event_scheduler';

-- actualmente APAGADO (o podría estar ENCENDIDO)

Especifique la hora de inicio de su evento durante la creación y especifique ON COMPLETION PRESERVE como

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 ;

Encienda el controlador de eventos:

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

Confirmarlo:

show variables where variable_name='event_scheduler';

Examine el estado de todos los eventos en una base de datos particular por nombre de base de datos:

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

Deshabilitar o habilitar un determinado evento por nombre en la base de datos actualmente seleccionada:

ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;

Y por último, pero no menos importante, cuando estoy escribiendo un nuevo evento, siempre agrego inicialmente en las declaraciones de eventos para registrar en una tabla de registro (con una declaración de inserción y una fecha y hora de now() ). De esa manera, sé que se disparó y que los datos en una cláusula where como la suya quizás no me den una lectura incorrecta de todo el asunto.

Y quiero decir que me vuelvo loco por todos lados. Inicialmente, luego lo elimino más tarde:

    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

Recuerde para todos los propósitos prácticos (excepto tal vez su tabla que realmente le importa de su pregunta) ... que EvtsLog La mía es tu única interfaz de usuario como programador de eventos y tu mejor amigo.

Mire la página del manual para saber qué AL FINALIZAR CONSERVAR significa así como otras cosas.