20.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.

The global 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. OFF is
the default value for
event_scheduler.

Event scheduling can be stopped by setting the value of
event_scheduler to
OFF.

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
DISABLED,
event_scheduler can be toggled
between ON and OFF (using
SET). It
is also possible to use 0 for
OFF, and 1 for
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:

Although ON and OFF have
numeric equivalents, the value displayed for
event_scheduler by
SELECT or SHOW
VARIABLES is always one of OFF,
ON, or DISABLED.
DISABLED has no numeric
equivalent. For this reason, ON and
OFF are usually preferred over
1 and 0 when setting this
variable.

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

Important

It is possible to set the Event Scheduler to
DISABLED only at server startup. If
event_scheduler is
ON or 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:

--event-scheduler=DISABLED

In the server configuration file (my.cnf,
or my.ini on Windows systems), include
the line where it will be read by the server (for example, in
a [mysqld] section):

event_scheduler=DISABLED

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 ON (or 1) or
OFF (or 0) in place of the
DISABLED value when starting the server.

Note

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 ON (or
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.cnf or
my.ini file (Bug #26807).