我有一个MySQL事件计划在每天午夜运行 - 但数据库服务器每天晚上关闭并且每天早上重新启动,但不一定在同一时间。例如,服务器启动时间:上午10点,我仍然需要在当天执行该事件,尽管它安排在上午12点。我在ORACLE中测试了这个场景并且它可以工作,但在MySQL中并不完全。你有什么建议吗?
提前致谢, Abhilash
答案 0 :(得分:1)
此行为的直接支持已在bug #46813中作为功能请求提交。它仍在“等待分流”:
事件调度程序应该能够定期检查并发现错过的事件。虽然可以使用Windows上的任务计划程序和Mac和* nix上的anacron来安排需要以这种方式运行的事件,但这是不优雅且依赖于平台的。
正如错误报告所示,您可以使用MySQL外部的软件安排此类事件。或者,可以使用MySQL的init-file
选项指定包含应在启动时执行的命令的文件;使用该表可以检查INFORMATION_SCHEMA.EVENTS
表:将LAST_EXECUTED
列与事件计划进行比较,如果错过了预定的事件,则执行EVENT_DEFINITION
。
答案 1 :(得分:0)
很抱歉,但MySQL无法解决这个问题。如果错过了比赛,那就错过了。它不会尝试以后再次运行它。
您可以做的是创建一个记录上次运行事件(日期)的表,然后为每个小时计划一次,但在运行之前检查它是否已经在那天运行。这样,它第一次在午夜之后运行就会激活。
答案 2 :(得分:0)
您可以创建一个每小时都会触发的事件。创建附加表以存储有关事件触发的信息。
在事件中执行以下步骤: