我有以下脚本。脚本运行但我想要的是它在挂钟时间后每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
答案 0 :(得分:1)
您的配置似乎正确无误。事件的时间安排非常精确,但它合理精确 - 足够它不应该是半分钟。
事件疑难解答的一个有趣的黑客是在事件中发出警告。由于没有可以发送警告的客户端,警告将写入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 $$
我使用它已经有一段时间了,但我相信警告会立即写入错误日志,并且在事件结束前不会缓冲。