数据库迁移后 MySQL 事件未运行

标签 mysql sql stored-procedures

我最近升级了我的服务器,从那时起我调用例程的事件似乎无法正常工作。

我知道该例程有效,因为我可以手动调用它并且它不会显示任何错误。

事件代码如下:

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 命令将返回当前时间/日期,以便我确定我正在提供 future 的日期?

我也不确定下面的行:

CREATE DEFINER=`root`@`localhost`

这里肯定应该使用root用户吧?

phpmyadmin 有什么方法可以判断事件是否已运行吗?

欢迎任何建议!

最佳答案

可能是您的 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

关于数据库迁移后 MySQL 事件未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16937280/

相关文章:

存储过程的 MySQL 语法错误

sql - SUM 聚合函数和子查询-SQL

php - 尝试使用 Yiimail 从数据库中获取电子邮件

mysql - 为什么我的这个简单的功能不能保存?

php - 从数据库中选择值的下拉列表 php

找不到 MySQL 列

以子查询作为数据源的 SQL 更新不起作用 (Postgresql)

mysql - 帮助 PHP 代码,从数据库中选择

SQL 服务器 : multiple rows with same column values except one

MySQL 存储过程语法错误