Bug #117719 The event scheduler is not working.
Submitted: 17 Mar 2:13
Reporter: huazai huazai Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server: Stored Routines Severity:S2 (Serious)
Version:8.0.41 OS:Any
Assigned to: MySQL Verification Team CPU Architecture:Any

[17 Mar 2:13] huazai huazai
Description:
Setting a single database to read-only status may cause scheduled event tasks in other databases to fail.Even if the read-only attribute of a database that has already been set to read-only is removed, it still does not take effect.

How to repeat:
【1】 How to reproduce
create database test_1;
use test_1;
CREATE EVENT IF NOT EXISTS event_test_1
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
DO select 1;

create database test_2;
use test_2;
CREATE EVENT IF NOT EXISTS event_test_1
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
DO select 1;

select now();
select EVENT_NAME,EVENT_SCHEMA,INTERVAL_FIELD,STATUS,STARTS,CREATED,LAST_ALTERED,LAST_EXECUTED from information_schema.EVENTS;

【2】Execution result

mysql> select version();
+--------------+
| version()    |
+--------------+
| 8.0.41-debug |
+--------------+
1 row in set (0.00 sec)

mysql> create database test_1;
Query OK, 1 row affected (0.01 sec)

mysql> use test_1;
Database changed
mysql> CREATE EVENT IF NOT EXISTS event_test_1
    -> ON SCHEDULE EVERY 1 MINUTE
    -> STARTS CURRENT_TIMESTAMP
    -> DO select 1;
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> create database test_2;
Query OK, 1 row affected (0.01 sec)

mysql> use test_2;
Database changed
mysql> CREATE EVENT IF NOT EXISTS event_test_1
    -> ON SCHEDULE EVERY 1 MINUTE
    -> STARTS CURRENT_TIMESTAMP
    -> DO select 1;
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-03-17 08:58:56 |
+---------------------+
1 row in set (0.00 sec)

mysql> select EVENT_NAME,EVENT_SCHEMA,INTERVAL_FIELD,STATUS,STARTS,CREATED,LAST_ALTERED,LAST_EXECUTED from information_schema.EVENTS;
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| EVENT_NAME   | EVENT_SCHEMA | INTERVAL_FIELD | STATUS  | STARTS              | CREATED             | LAST_ALTERED        | LAST_EXECUTED       |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| event_test_1 | test_1       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 |
| event_test_1 | test_2       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
2 rows in set (0.01 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-03-17 08:59:59 |
+---------------------+
1 row in set (0.00 sec)

mysql> select EVENT_NAME,EVENT_SCHEMA,INTERVAL_FIELD,STATUS,STARTS,CREATED,LAST_ALTERED,LAST_EXECUTED from information_schema.EVENTS;
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| EVENT_NAME   | EVENT_SCHEMA | INTERVAL_FIELD | STATUS  | STARTS              | CREATED             | LAST_ALTERED        | LAST_EXECUTED       |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| event_test_1 | test_1       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:59:56 |
| event_test_1 | test_2       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:59:56 |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
2 rows in set (0.01 sec)

mysql> ALTER SCHEMA test_1 READ ONLY=1;
Query OK, 1 row affected (0.01 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-03-17 09:01:51 |
+---------------------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-03-17 09:03:49 |
+---------------------+
1 row in set (0.00 sec)

【Problem 1】The events in both databases are invalid.

mysql> select EVENT_NAME,EVENT_SCHEMA,INTERVAL_FIELD,STATUS,STARTS,CREATED,LAST_ALTERED,LAST_EXECUTED from information_schema.EVENTS;
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| EVENT_NAME   | EVENT_SCHEMA | INTERVAL_FIELD | STATUS  | STARTS              | CREATED             | LAST_ALTERED        | LAST_EXECUTED       |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| event_test_1 | test_1       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 09:00:56 |
| event_test_1 | test_2       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 09:01:56 |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
2 rows in set (0.01 sec)

【Problem 2】Even if the read-only attribute of test_1 is removed, it still does not work.

mysql> ALTER SCHEMA test_1 READ ONLY=0;
Query OK, 1 row affected (0.01 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-03-17 09:06:01 |
+---------------------+
1 row in set (0.00 sec)

mysql> select EVENT_NAME,EVENT_SCHEMA,INTERVAL_FIELD,STATUS,STARTS,CREATED,LAST_ALTERED,LAST_EXECUTED from information_schema.EVENTS;
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| EVENT_NAME   | EVENT_SCHEMA | INTERVAL_FIELD | STATUS  | STARTS              | CREATED             | LAST_ALTERED        | LAST_EXECUTED       |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
| event_test_1 | test_1       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 09:00:56 |
| event_test_1 | test_2       | MINUTE         | ENABLED | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 08:58:56 | 2025-03-17 09:01:56 |
+--------------+--------------+----------------+---------+---------------------+---------------------+---------------------+---------------------+
2 rows in set (0.00 sec)