间隔后,MySQL事件未运行

时间:2013-02-18 13:00:28

标签: mysql events

我使用此查询在MySQL中创建了一个事件:

delimiter $$
create event update_usability_score
on schedule every 1 day 
starts '2013-01-07 18:22:00'
  do
begin
insert into table_name(pk_id,name) values(1,"testing");

update table table_name set name = 'Not testing' where name like '%testing%';
end//
delimiter ;

当我第一次运行它时它工作正常并且没有显示任何错误。正如我所询问的那样,这一事件将每天都在进行。但它并不是每天都在运行。

当我查看时:

select name, last_executed from mysql.event; 

显示开始日期。意味着它不是每天都在运行。

如何每天举办此活动?我在查询中遗漏了什么?

请提前感谢帮助解决这个问题。

1 个答案:

答案 0 :(得分:8)

您需要设置ON COMPLETION PRESERVE选项:

CREATE EVENT update_usability_score
  ON SCHEDULE EVERY 1 DAY
  STARTS '2013-01-07 18:22:00'
  ON COMPLETION PRESERVE
DO
BEGIN
  ...
END

来自event documentation

  

通常,一旦事件过期,它会立即被删除。您可以通过指定ON COMPLETION PRESERVE来覆盖此行为。使用ON COMPLETION NOT PRESERVE只会使默认的非持久行为显式化。