我有以下脚本。脚本运行,但我想要的是它在挂钟时间后每 5 分钟运行一次。这意味着它应该在 5、10、15 点运行……按照挂钟时间间隔 5 分钟。我可以衡量的运行结果是时间是 10 - 30 秒。有没有办法让它更接近 5 分钟标记?谢谢。

CREATE DEFINER=`root`@`%`
EVENT `run_event`
ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO CALL my_procedure

最佳答案

您的配置似乎正确。事件的时间安排不是非常精确,但它是相当精确的——足以让它不应该有半分钟的时间。

事件故障排除的一个有趣技巧是从事件内部发出警告。由于没有可以向其发送警告的客户端,因此将警告写入 MySQL 错误日志。这应该适用于 MySQL 5.5 及更高版本:

DELIMITER $$

DROP EVENT IF EXISTS run_event $$

CREATE DEFINER=`root`@`%`
EVENT `run_event`
ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO
BEGIN
  SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'run_event started';
  CALL my_procedure;
  SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'run_event finished';
END $$

自从我使用它已经有一段时间了,但我相信警告会立即写入错误日志,并且在事件完成之前不会缓冲。

关于mysql 计划事件每 5 分钟一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41097193/

10-16 15:16
查看更多