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)