为什么这个mysql事件无法运行?

问题描述 投票:0回答:2
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)

所以我发现该活动根本没有举办。

mysql events
2个回答
45
投票

您的活动调度程序正在运行吗?请使用

SHOW PROCESSLIST
进行检查。

如果用户“event_scheduler”没有进程“Daemon”,那么它就不会运行。

启动事件调度程序:

SET GLOBAL event_scheduler = ON;

另请参阅 http://dev.mysql.com/doc/refman/en/events-configuration.html


2
投票

首先您必须检查使用:

SHOW VARIABLES LIKE 'event_scheduler';

如果它关闭,您必须使用以下命令运行事件调度程序:

SET GLOBAL event_scheduler = ON;

我的你必须将此变量保存在你的配置(my.ini / my.conf)中,如果你不这样做,当 mysql 重新启动时事件将不会启动。

[mysql]
event_scheduler=ON
© www.soinside.com 2019 - 2024. All rights reserved.