【问题标题】:MySQL Cannot create EVENTsMySQL 无法创建事件
【发布时间】:2019-11-18 21:00:56
【问题描述】:

我正在尝试创建一个 EVENT 以每天按计划启动以更新表中的数据。我在 MySQL 中使用SET GLOBAL event_scheduler = ON; 命令设置了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 时它返回一个空集。此外,如果我 DROP update_attendance 它会丢弃该事件。触发器永远不会执行一次。我在 Windows 10 上运行 XAMPP 的 MySQL。我不明白发生了什么。我在这里做错了什么?

【问题讨论】:

  • 我感觉您可能还需要/想添加ON COMPLETION PRESERVE..
  • @RaymondNijland 我添加了它,但没有任何区别。和以前一样。如果事件从未触发,它甚至会有所作为吗?
  • “如果它从来没有运行过一次会有什么不同吗?” 不,你的问题并不完全清楚,事件从未执行过一次......在CREATE EVENT 之后直接运行SHOW WARNINGS; 也许你会得到提示为什么它不工作..
  • 创建触发器后没有任何警告。
  • 我能想到它可能失败的唯一原因是 UPDATE 查询是“错误的”,这意味着错误的表名或列名。MySQL 在 CREATE EVENT 期间不检查 UPDATE 的验证 - > db-fiddle.com/f/hNzXscoFWmibr69BV31fPc/0 注意我可以创建缺少“对象”的事件(在这种情况下是缺少表)

标签: mysql events xampp mariadb


【解决方案1】:

原来是XAMPP下MySQL的损坏文件。当我今天尝试在我的 PC 上运行 MySQL 时,文件已损坏,直到我重新安装它才能工作。现在活动正常进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多