任务开关开启mysql> show variables like '%event%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)mysql>--任务脚本如下:
 drop event if exists e_Set;
 CREATE EVENT e_Set
 ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
 begin
      INSERT INTO EVENT_1 VALUES(NOW());
end; 
然后SHOW EVENTS也能够看到这个任务。我把机器时间调整到2011-03-03 23:59:50 ,等待20秒,确保任务执行完成,再查EVENT_1表,里面没有写入记录。网络上讲计划任务的,基本上都是用SECOND来说明,每秒写入一条记录,我测试也是成功的,但是我想每天执行一次,却失败了。这个计划任务的作用是想用来做刷新日志,还有一些统计类的计算,用BAT文件已经可以做到,觉得维护起来不方便,数据迁移的时候还得去维护BAT文件,放到EVENT里,一个DUMP就全部搞定。大家帮我看看啥原因。

解决方案 »

  1.   

    drop event if exists e_Set;
     CREATE EVENT e_Set
     ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
     begin
          INSERT INTO EVENT_1 VALUES(NOW());
    end; 没有看到你所说的一天执行一次的计划的标示。
      

  2.   

    drop event if exists e_Set;
     CREATE EVENT e_Set
     ON SCHEDULE EVERY 86400 SECOND STARTS '2010-11-15 00:00:00' DO
     begin
          INSERT INTO EVENT_1 VALUES(NOW());
    end; 用上面的,你再试试看啊!
      

  3.   


    EVERY 1 day 这里是任务的调度频度。
      

  4.   

    -- 或者试试看吧,你设置23点,人家不是要等到晚上23点再执行啊。drop event if exists e_Set;
     CREATE EVENT e_Set
     ON SCHEDULE EVERY 1 day STARTS '2010-11-15 00:00:00' DO
     begin
      INSERT INTO EVENT_1 VALUES(NOW());
    end;  
      

  5.   


    是不是忘记开启时间了啊: ALTER EVENT e_Set ON COMPLETION PRESERVE ENABLE;执行上面这句再看看有了吗?
      

  6.   

    ...试试 把start的时间调整为你现在时间的下一分钟。。
    电脑时间别调整了。。也许读的不是电脑时间。。
      

  7.   

    基本上都是用SECOND来说明,每秒写入一条记录,我测试也是成功的,但是我想每天执行一次,却失败了。
    ------天,很可能不是从0:01开始算,而是从任务开始日期+1天-1秒算第一天,等1天吧,绝对好用的~~
      

  8.   

    支持楼上的解释,改系统时间大多不靠谱。想验证,可以把按天schedule缩小成几秒schedule,一下子就知道是否正确了。