解决方案 »

  1.   

    还是说,mysql的event实现内部有一种什么机制能够记录到时间点或者什么?如果有人知道mysql创建event执行的原理,也可以解释下……很急啊~
      

  2.   

    show events;show variables like 'event_scheduler';贴出以供分析。
      

  3.   

    已经开启过了,
    /*开启功能*/ SET GLOBAL event_scheduler = ON;
      

  4.   

    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 |
    +-------+----------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
    | EASY7 | eventlog | root@localhost | SYSTEM    | RECURRING | NULL       | 1              | DAY            | 2010-12-24 20:00:00 | NULL | ENABLED |          1 | utf8                 | utf8_general_ci      | utf8_general_ci    | 
    +-------+----------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
    1 row in set (0.00 sec)
      

  5.   

    mysql> SHOW VARIABLES LIKE 'event_scheduler';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | event_scheduler | ON    | 
    +-----------------+-------+
    1 row in set (0.02 sec)
      

  6.   

    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 |
    +-------+----------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
    | EASY7 | eventlog | root@localhost | SYSTEM    | RECURRING | NULL       | 1              | DAY            | 2012-12-29 09:00:00 | NULL | ENABLED |          1 | utf8                 | utf8_general_ci      | utf8_general_ci    | 
    +-------+----------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
    1 row in set (0.04 sec)不好意思 贴错了,这个才是对的……
      

  7.   

    我自己也这么测试过
    测试环境是windows 7
    mysql-5.6.12
    调整过时间后event并不执行
    但是调整时间后
    重启mysql服务之后
    event执行正常
    所以个人认为
    mysql的event执行的时候就是在mysql服务启动后自动计算该event到下一次需要执行的时间间隔
    然后启动定时器自己跑着,等到timeout了就执行该event中的代码这一点跟我们平常项目中做的定时任务原则差不多
    以上分析属于个人分析意见
    仅供参考