mysql> show create event online_event;
+--------------+-----------------------------------------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Event | sql_mode | time_zone | Create Event | character_set_client | collation_connection | Database Collation |
+--------------+-----------------------------------------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| online_event | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER | SYSTEM | CREATE EVENT `online_event` ON SCHEDULE EVERY 1 SECOND STARTS '2009-06-03 06:54:16' ON COMPLETION NOT PRESERVE ENABLE DO DELETE FROM online where webserver_id is null and jabber_server_id is null | utf8 | utf8_general_ci | utf8_general_ci |
+--------------+-----------------------------------------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)
mysql>
这是以这种方式创建的:
CREATE EVENT online_event
ON SCHEDULE EVERY 1 SECOND
DO
DELETE FROM online where webserver_id is null and jabber_server_id is null;
经过相当长的一段时间后,我发现:
mysql> select *from online;
+----+------------+---------------------+--------------+------------------+
| id | account_id | since | webserver_id | jabber_server_id |
+----+------------+---------------------+--------------+------------------+
| 1 | 30 | 2009-06-03 06:24:38 | NULL | NULL |
+----+------------+---------------------+--------------+------------------+
1 row in set (0.00 sec)
所以我发现事件根本没有运行。
答案 0 :(得分:42)
您的活动安排程序是否正在运行?查看SHOW PROCESSLIST
。
如果用户“event_scheduler”没有进程“守护进程”,那么它就没有运行。
启动事件调度程序:
SET GLOBAL event_scheduler = ON;
另见http://dev.mysql.com/doc/refman/5.1/en/events-configuration.html
答案 1 :(得分:0)
首先,您必须使用:
SHOW VARIABLES LIKE 'event_scheduler';
如果关闭,则必须使用以下命令运行事件计划程序:
SET GLOBAL event_scheduler = ON;
我必须将此变量保存在配置文件(my.ini / my.conf)中,如果不这样做,则在mysql重新启动时事件不会开始。
[mysql]
event_scheduler=ON