2009-06-02 16 views
13
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> 

Es ist auf diese Weise erstellt:Warum kann dieses mysql-Ereignis nicht ausgeführt werden?

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

und nach einer recht Zeit, fand ich:

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 finde ich, dass das Ereignis nicht überhaupt ausgeführt wird.

Antwort

41

Wird der Ereignisplaner ausgeführt? Überprüfen Sie mit SHOW PROCESSLIST.

Wenn Sie keinen Prozess "Daemon" vom Benutzer "event_scheduler" haben, dann wird es nicht ausgeführt.

die so Event-Scheduler starten:

SET GLOBAL event_scheduler = ON; 

Siehe auch http://dev.mysql.com/doc/refman/5.1/en/events-configuration.html

+0

aber wenn ich den Server neu starten, beginnt nicht automatisch –

+0

wenn ich die Zeile 'setzen event_scheduler = ENABLED' in der Datei' my.conf 'der Dienst startet nicht –

+15

Ich musste die Zeile' event_scheduler = ON' in den '[mysqld]' Abschnitt der 'my.conf' Datei einfügen –

Verwandte Themen