1

嘿,我创建了一个以特定时间戳结束的事件,并希望将其更改为无限运行。

我试过运行:

ALTER EVENT event_name 
ON SCHEDULE EVERY '5' MINUTE 
STARTS '2013-10-21 14:49' ENDS NULL 
ON COMPLETION PRESERVE ENABLE    DO [code];

但我收到错误错误代码:1543。ENDS 无效或在 STARTS 之前

如何才能做到这一点?我知道我可以在遥远的未来设置一个看起来无限远的日期,但我希望将 ENDS 设置为空。

如果我简单地排除 ENDS 参数,它会卡在旧的结束日期上,您可以在以下情况下看到:select * from information_schema.events 但是事件确实继续运行,就好像 ENDS 为空一样。这主要是我需要实现的。

4

1 回答 1

1

我相信这个ENDS参数是可选的,否则你可以指定一个未来的日期。 ENDS必须后跟时间戳。

一个 EVERY 子句可以包含一个可选的 ENDS 子句。ENDS 关键字后跟一个时间戳值,它告诉 MySQL 事件何时应该停止重复。您也可以将 + INTERVAL 间隔与 ENDS 一起使用;例如,EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK 相当于“每 12 小时,从现在开始 30 分钟,从现在开始 4 周结束”。不使用 ENDS 意味着事件会无限期地继续执行。

ENDS 支持与 STARTS 相同的复杂时间单位语法。

您可以在 EVERY 子句中使用 STARTS、ENDS、两者或都不使用。

http://dev.mysql.com/doc/refman/5.1/en/create-event.html

您唯一的选择(和解决方法)是重新创建事件(http://bugs.mysql.com/bug.php?id=39173)。

于 2013-10-21T11:53:01.227 回答