写了个计划任务,定时调用存储过程,不执行,求助:计划任务:delimiter $$drop event if exists faultMonthlyTotalEvt $$create event faultMonthlyTotalEvt on schedule every 1 MONTH  /*每月执行*/  starts timestamp(current_date,'23:50:00') /*开始于当前日期的'23:50:00'*/ ON COMPLETION PRESERVE                   /*任务执行完成后保留*/ ENABLE /*计划任务是否创建即有效*/  COMMENT '月报统计汇总计划任务' /*注释*/  DO     BEGIN Call faultMonthlyTotal(); /*执行存储过程*/     END;$$delimiter ;1.调度器状态是开启,已写入配置文件。
2.在查询或命令行界面执行存储过程,都能成功。
3.我修改数据库服务器的系统时间,用来测试该计划任务,当到了该时间,发现计划任务未执行。

解决方案 »

  1.   

    http://topic.csdn.net/u/20091020/22/c51bb709-6dbc-4fd1-b874-077714ed547e.html
      

  2.   

    在[mysqld]的下面加入如下行...
    event_scheduler = 1
    or
    SET GLOBAL event_scheduler = 1;
      

  3.   

    贴出你的 
    show variables like '%sc%';
    show events;
      

  4.   

    show variables like '%sc%';+-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | event_scheduler | ON    |
    +-----------------+-------+
    1 row in set
    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 |
    +---------+-----------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
    | db_lift | faultMonthlyEvt | root@%  | SYSTEM    | RECURRING | NULL       | 1              | MONTH          | 2011-12-21 10:15:00 | NULL | ENABLED |          1 | utf8                 | utf8_general_ci      | utf8_general_ci    |
    | db_lift | overdueEvent    | root@%  | SYSTEM    | RECURRING | NULL       | 1              | DAY            | 2011-11-01 17:20:00 | NULL | ENABLED |          1 | utf8                 | utf8_general_ci      | utf8_general_ci    |
    +---------+-----------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
    2 rows in set
    少说了一点,我是每个月的最后一天执行这个计划任务,如果我12月31号23:50执行,那么下一个月是哪天,是1月31号23:50,再下一个月是?2月28号?还是2月29号?再下一个月是3月30号吗?
    就是说会不会,这个计划任务能保证在每个月的最后一天执行。
    -------------------------------------------------------------------
    create event faultMonthlyTotalEvton schedule every 1 MONTH /*每月执行*/  starts timestamp(2011-12-31,'23:50:00') /*开始于当前日期的'23:50:00'*/ON COMPLETION PRESERVE /*任务执行完成后保留*/ENABLE /*计划任务是否创建即有效*/
    ---------------------------------------------------------------------------------
    如上述代码,能否保证?
      

  5.   

    上面这个写错了,加了个引号  starts timestamp('2011-12-31','23:50:00')
    -------------------------------------------------------------------
    create event faultMonthlyTotalEvton schedule every 1 MONTH /*每月执行*/  starts timestamp('2011-12-31','23:50:00') /*开始于当前日期的'23:50:00'*/ON COMPLETION PRESERVE /*任务执行完成后保留*/ENABLE /*计划任务是否创建即有效*/
    ---------------------------------------------------------------------------------
      

  6.   

    测试一下这个create event faultMonthlyTotalEvton schedule every 1 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 4 minuteDO    BEGIN Call faultMonthlyTotal(); /*执行存储过程*/    END
      

  7.   

    存储过程里怎么给变量赋值?declare this_month INT DEFAULT 0;SELECT MONTH(CURDATE()) INTO this_month;我想将当前月份赋值给一个变量,这样赋值不对啊。该什么赋值?