omg
omg

Reputation: 140102

why this mysql event can't get run?

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>

It's created this way:

CREATE EVENT online_event
    ON SCHEDULE EVERY 1 SECOND
    DO 
      DELETE FROM online where webserver_id is null and jabber_server_id is null;

and after quite a period,I found:

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)

So I find that the event is not run at all.

Upvotes: 15

Views: 16221

Answers (2)

Bill Karwin
Bill Karwin

Reputation: 562871

Is your event scheduler running? Check with SHOW PROCESSLIST.

If you don't have a process "Daemon" by user "event_scheduler" then it's not running.

Start the event scheduler thus:

SET GLOBAL event_scheduler = ON;

See also http://dev.mysql.com/doc/refman/en/events-configuration.html

Upvotes: 45

belaassal
belaassal

Reputation: 133

First you must check using :

SHOW VARIABLES LIKE 'event_scheduler';

if it's OFF you must run event scheduler using :

SET GLOBAL event_scheduler = ON;

My you must save this variable in your config (my.ini / my.conf) , if you don't events will not start when mysql restart .

[mysql]
event_scheduler=ON

Upvotes: 2

Related Questions