2

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

在此先感谢阿比拉什

4

3 回答 3

2

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

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

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

于 2012-08-28T07:56:35.700 回答
0

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

在事件中执行以下步骤:

  • 检查事件是否被触发 - 阅读信息。从表
  • 如果未触发事件,则执行代码,将信息(日期)写入表中。
于 2012-08-28T08:18:48.447 回答
0

对不起,但 MySQL 不处理这个。如果错过了活动,那就错过了。它不会尝试稍后再次运行它。

您可以做的是制作一个记录事件上次运行时间(日期)的表格,然后将其安排为每小时,但在运行之前检查它是否已在当天运行。这样,它在午夜后第一次运行时就会激活。

于 2012-08-28T07:34:51.400 回答