我正在尝试创建一个 EVENT
每天按计划启动以更新表中的数据。我设置了event_scheduler
在 MySQL 中打开 SET GLOBAL event_scheduler = ON;
命令,这是我运行以下命令时看到的内容:
MariaDB [hr]> SHOW PROCESSLIST;
+-----+-----------------+-----------+------+---------+-------+--------------------------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+-----+-----------------+-----------+------+---------+-------+--------------------------+------------------+----------+
| 1 | system user | | NULL | Daemon | NULL | InnoDB purge coordinator | NULL | 0.000 |
| 2 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 3 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 4 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 5 | system user | | NULL | Daemon | NULL | InnoDB shutdown handler | NULL | 0.000 |
| 228 | event_scheduler | localhost | NULL | Daemon | 10486 | Waiting on empty queue | NULL | 0.000 |
| 613 | root | localhost | hr | Query | 0 | Init | SHOW PROCESSLIST | 0.000 |
+-----+-----------------+-----------+------+---------+-------+--------------------------+------------------+----------+
7 rows in set (0.000 sec)
所以 event_scheduler 确实正在运行。这就是我创建触发器的方式:
CREATE EVENT update_attendance
ON SCHEDULE
EVERY 1 MINUTE
DO
UPDATE attendance SET markedAttendance = 1;
当我运行这个时,它显示 Query OK, 0 rows affected (0.000 sec)
,但是当我运行 SHOW EVENTS
时它返回一个空集。另外,如果我删除 update_attendance
它会丢弃该事件。触发器甚至不会被执行一次。我在 Windows 10 上运行 XAMPP 的 MySQL。我不明白发生了什么。我在这里做错了什么?
最佳答案
原来是XAMPP下的MySQL文件损坏。今天,当我尝试在我的 PC 上运行 MySQL 时,文件已损坏,并且在我重新安装之前它无法工作。目前事件正常进行。
关于MySQL 无法创建事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56950284/