23.4.2 Event Scheduler Configuration
Events are executed by a special event scheduler thread; when we refer to the Event Scheduler, we actually refer to this thread. When running, the event scheduler thread and its current state can be seen by users having the
PROCESS privilege in the output of
SHOW PROCESSLIST, as shown in the discussion that follows.
event_scheduler system variable determines whether the Event Scheduler is enabled and running on the server. It has one of these 3 values, which affect event scheduling as described here:
OFF: The Event Scheduler is stopped. The event scheduler thread does not run, is not shown in the output of
SHOW PROCESSLIST, and no scheduled events are executed.
OFFis the default value for
ON: The Event Scheduler is started; the event scheduler thread runs and executes all scheduled events.
When the Event Scheduler is
ON, the event scheduler thread is listed in the output of
SHOW PROCESSLISTas a daemon process, and its state is represented as shown here:
mysql> SHOW PROCESSLIST\G *************************** 1. row *************************** Id: 1 User: root Host: localhost db: NULL Command: Query Time: 0 State: NULL Info: show processlist *************************** 2. row *************************** Id: 2 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 3 State: Waiting for next activation Info: NULL 2 rows in set (0.00 sec)
Event scheduling can be stopped by setting the value of
DISABLED: This value renders the Event Scheduler nonoperational. When the Event Scheduler is
DISABLED, the event scheduler thread does not run (and so does not appear in the output of
SHOW PROCESSLIST). In addition, the Event Scheduler state cannot be changed at runtime.
If the Event Scheduler status has not been set to
event_scheduler can be toggled between
SET). It is also possible to use
ON when setting this variable. Thus, any of the following 4 statements can be used in the mysql client to turn on the Event Scheduler:
SET GLOBAL event_scheduler = ON; SET @@GLOBAL.event_scheduler = ON; SET GLOBAL event_scheduler = 1; SET @@GLOBAL.event_scheduler = 1;
Similarly, any of these 4 statements can be used to turn off the Event Scheduler:
SET GLOBAL event_scheduler = OFF; SET @@GLOBAL.event_scheduler = OFF; SET GLOBAL event_scheduler = 0; SET @@GLOBAL.event_scheduler = 0;
OFF have numeric equivalents, the value displayed for
SHOW VARIABLES is always one of
DISABLED has no numeric equivalent. For this reason,
OFF are usually preferred over
0 when setting this variable.
Note that attempting to set
event_scheduler without specifying it as a global variable causes an error:
mysql< SET @@event_scheduler = OFF; ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
It is possible to set the Event Scheduler to
DISABLED only at server startup. If
OFF, you cannot set it to
DISABLED at runtime. Also, if the Event Scheduler is set to
DISABLED at startup, you cannot change the value of
event_scheduler at runtime.
To disable the event scheduler, use one of the following two methods:
As a command-line option when starting the server:
In the server configuration file (
my.inion Windows systems), include the line where it will be read by the server (for example, in a
To enable the Event Scheduler, restart the server without the
--event-scheduler=DISABLED command-line option, or after removing or commenting out the line containing
event-scheduler=DISABLED in the server configuration file, as appropriate. Alternatively, you can use
0) in place of the
DISABLED value when starting the server.
You can issue event-manipulation statements when
event_scheduler is set to
DISABLED. No warnings or errors are generated in such cases (provided that the statements are themselves valid). However, scheduled events cannot execute until this variable is set to
1). Once this has been done, the event scheduler thread executes all events whose scheduling conditions are satisfied.
Starting the MySQL server with the
--skip-grant-tables option causes
event_scheduler to be set to
DISABLED, overriding any other value set either on the command line or in the
my.ini file (Bug #26807).
For SQL statements used to create, alter, and drop events, see Section 23.4.3, “Event Syntax”.
MySQL provides an
EVENTS table in the
INFORMATION_SCHEMA database. This table can be queried to obtain information about scheduled events which have been defined on the server. See Section 23.4.4, “Event Metadata”, and Section 24.8, “The INFORMATION_SCHEMA EVENTS Table”, for more information.
For information regarding event scheduling and the MySQL privilege system, see Section 23.4.6, “The Event Scheduler and MySQL Privileges”.