Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Estou tentando criar um evento para limpar linhas da minha tabela de 1 dia atrás, para que execute a cada 15 minutos, ja fiz de varias formas mas meu MySQL nao executa, o que pode estar errado? alguem pode ajudar?
Criei meu evento desta forma:
CREATE EVENT limpeza on schedule every 15 minute do delete from tempdat where tdate < DATE_SUB(NOW(), INTERVAL 1 DAY);
Obrigado!
>
Agora, JacsJacob disse:
Boa tarde,
Estou tentando criar um evento para limpar linhas da minha tabela de 1 dia atrás, para que execute a cada 15 minutos, ja fiz de varias formas mas meu MySQL nao executa, o que pode estar errado? alguem pode ajudar?
Criei meu evento desta forma:
CREATE EVENT limpeza on schedule every 15 minute do delete from tempdat where tdate < DATE_SUB(NOW(), INTERVAL 1 DAY);
Obrigado!
Detalhe, quando rodo o comando na mão ele limpa as linhas desejadas... mas quando crio o evento, ele nao executa sozinho a cada 15 minutos...>
4 minutos atrás, Prog disse:
Habilite os eventos:
set global event_scheduler=on;
Verifique se o evento está criado:
show events;
feito...
eu tinha habilitado ja, mas nao rodou mesmo assim... vamos ver se agora vai...
mysql> show events;
+-------+---------+-------------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |
+-------+---------+-------------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| temps | limpeza | monitor@localhost | SYSTEM | RECURRING | NULL | 15 | MINUTE | 2017-04-27 12:34:00 | NULL | ENABLED | 0 | utf8mb4 | utf8mb4_general_ci | latin1_swedish_ci |
+-------+---------+-------------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)
mysql> set global event_scheduler=on;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> show events;
+-------+---------+-------------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |
+-------+---------+-------------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| temps | limpeza | monitor@localhost | SYSTEM | RECURRING | NULL | 15 | MINUTE | 2017-04-27 12:34:00 | NULL | ENABLED | 0 | utf8mb4 | utf8mb4_general_ci | latin1_swedish_ci |
+-------+---------+-------------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)
será que é por conta do usuario? eu habilitei usando o root pois o usuario monitor ele nao tem permissao para habilitar os eventos... pode ser isso?
Na verdade, o usuário precisa ter grant para rodar events. Algo como:
GRANT EVENT ON schema.temps TO monitor@localhost;
>
5 minutos atrás, Prog disse:
Na verdade, o usuário precisa ter grant para rodar events. Algo como:
GRANT EVENT ON schema.temps TO monitor@localhost;
obrigado, agora deve rodar entao.. vou acompanhar... :)
Abraços!Tente assim:
CREATE EVENT limpeza
ON SCHEDULE
EVERY 15 MINUTE STARTS '2017-04-27 14:30:00' -- Altere aqui, para quando você quer que inicie
ON COMPLETION PRESERVE
ENABLE
DO
delete from tempdat where tdate < DATE_SUB(NOW(), INTERVAL 1 DAY);
Habilite os eventos: