### 25.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`](privileges-provided.html#priv_process) privilege in the output of [`SHOW PROCESSLIST`](show-processlist.html), as shown in the discussion that follows.

[]()[]()

 The global [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) system variable determines whether the Event Scheduler is enabled and running on the server. It has one of the following values, which affect event scheduling as described:

* `ON`: The Event Scheduler is started; the event scheduler thread runs and executes all scheduled events. `ON` is the default [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) value.

  []()

   When the Event Scheduler is `ON`, the event scheduler thread is listed in the output of [`SHOW PROCESSLIST`](show-processlist.html) as 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 [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) to `OFF`.

* `OFF`: The Event Scheduler is stopped. The event scheduler thread does not run, is not shown in the output of [`SHOW PROCESSLIST`](show-processlist.html), and no scheduled events execute.

   When the Event Scheduler is stopped ([`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) is `OFF`), it can be started by setting the value of [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) to `ON`. (See next item.)

* `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`](show-processlist.html)). In addition, the Event Scheduler state cannot be changed at runtime.

 If the Event Scheduler status has not been set to `DISABLED`, [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) can be toggled between `ON` and `OFF` (using [`SET`](set-variable.html)). 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**](mysql.html) 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;
```

Note

 If the Event Scheduler is enabled, enabling the [`super_read_only`](server-system-variables.html#sysvar_super_read_only) system variable prevents it from updating event “last executed” timestamps in the `events` data dictionary table. This causes the Event Scheduler to stop the next time it tries to execute a scheduled event, after writing a message to the server error log. (In this situation the [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) system variable does not change from `ON` to `OFF`. An implication is that this variable relects the DBA *intent* that the Event Scheduler be enabled or disabled, where its actual status of started or stopped may be distinct.). If [`super_read_only`](server-system-variables.html#sysvar_super_read_only) is subsequently disabled after being enabled, the server automatically restarts the Event Scheduler as needed, as of MySQL 8.0.26. Prior to MySQL 8.0.26, it is necessary to manually restart the Event Scheduler by enabling it again.

 Although `ON` and `OFF` have numeric equivalents, the value displayed for [`event_scheduler`](server-system-variables.html#sysvar_event_scheduler) by [`SELECT`](select.html) or [`SHOW VARIABLES`](show-variables.html) 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.

 Note that attempting to set [`event_scheduler`](server-system-variables.html#sysvar_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`](server-system-variables.html#sysvar_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`](server-system-variables.html#sysvar_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 can 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`](server-system-variables.html#sysvar_event_scheduler) command-line option, or after removing or commenting out the line containing [`event-scheduler=DISABLED`](server-system-variables.html#sysvar_event_scheduler) 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`](server-system-variables.html#sysvar_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`](server-options.html#option_mysqld_skip-grant-tables) option causes [`event_scheduler`](server-system-variables.html#sysvar_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).

 For SQL statements used to create, alter, and drop events, see [Section 25.4.3, “Event Syntax”](events-syntax.html).

 MySQL provides an [`EVENTS`](information-schema-events-table.html) 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 25.4.4, “Event Metadata”](events-metadata.html), and [Section 26.3.14, “The INFORMATION\_SCHEMA EVENTS Table”](information-schema-events-table.html), for more information.

 For information regarding event scheduling and the MySQL privilege system, see [Section 25.4.6, “The Event Scheduler and MySQL Privileges”](events-privileges.html).

