MySQL事件调度

时间:2012-08-28 07:17:22

标签: mysql

我有一个MySQL事件计划在每天午夜运行 - 但数据库服务器每天晚上关闭并且每天早上重新启动,但不一定在同一时间。例如,服务器启动时间:上午10点,我仍然需要在当天执行该事件,尽管它安排在上午12点。我在ORACLE中测试了这个场景并且它可以工作,但在MySQL中并不完全。你有什么建议吗?

提前致谢, Abhilash

3 个答案:

答案 0 :(得分:1)

此行为的直接支持已在bug #46813中作为功能请求提交。它仍在“等待分流”:

  

事件调度程序应该能够定期检查并发现错过的事件。虽然可以使用Windows上的任务计划程序和Mac和* nix上的anacron来安排需要以这种方式运行的事件,但这是不优雅且依赖于平台的。

正如错误报告所示,您可以使用MySQL外部的软件安排此类事件。或者,可以使用MySQL的init-file选项指定包含应在启动时执行的命令的文件;使用该表可以检查INFORMATION_SCHEMA.EVENTS表:将LAST_EXECUTED列与事件计划进行比较,如果错过了预定的事件,则执行EVENT_DEFINITION

答案 1 :(得分:0)

很抱歉,但MySQL无法解决这个问题。如果错过了比赛,那就错过了。它不会尝试以后再次运行它。

您可以做的是创建一个记录上次运行事件(日期)的表,然后为每个小时计划一次,但在运行之前检查它是否已经在那天运行。这样,它第一次在午夜之后运行就会激活。

答案 2 :(得分:0)

您可以创建一个每小时都会触发的事件。创建附加表以存储有关事件触发的信息。

在事件中执行以下步骤:

  • 检查事件是否被触发 - 阅读信息。从表中
  • 如果未触发事件stil,则执行代码,将信息(日期)写入表中。
相关问题