我最近升级了我的服务器,从那时起调用例程的事件似乎无法正常工作。
我知道该例程有效,因为我可以手动调用它并且它没有显示任何错误。
事件代码如下所示:
DROP EVENT `event_image_update_views`//
CREATE DEFINER=`root`@`localhost` EVENT `event_image_update_views` ON SCHEDULE EVERY 5 MINUTE STARTS '2013-06-05 11:00:00' ON COMPLETION NOT PRESERVE ENABLE DO CALL image_update_views()
它基本上要求数据库在特定日期之后每隔5分钟调用一个名为image_update_views()的例程。
我相当确定我的数据库上的日期是正确的,但我不是100%肯定。是否有一个我可以运行的sql命令将返回当前时间/日期,以便我确定我提供了将来的日期?
我也不确定以下这一行:
CREATE DEFINER=`root`@`localhost`
当然应该在这里使用root用户吗?
phpmyadmin有没有办法判断事件是否已经运行?
欢迎任何建议!
答案 0 :(得分:3)
可能是你的MySQL事件调度程序没有运行。
尝试此操作以查看它是否正在运行:
show variables like 'event_scheduler';
如果你得到OFF
的值,那么这可能就是原因。您可以通过运行来重新打开它:
SET GLOBAL event_scheduler = ON;
如果您需要知道可以运行的MySQL当前日期和时间:
select now();
最后,您可以使用此查询查看MySQL事件调度程序上次运行事件的时间:
select event_schema,event_name,last_executed
from information_schema.events;
祝你好运!
修改强>
如果您需要在默认情况下打开event_scheduler,请转到my.cnf文件(如果您使用的是Windows,则转到my.ini文件)并注释掉event_scheduler=DISABLED
或设置event_scheduler=ON
。然后重启MySQL服务器。
还有一些关于它的信息here。