mysql数据库事件

今天在测试一个存储过程和数据库事件,就是到某一个固定时间,数据库自动调用一个存储过程实现一些功能。

单独来看事件是没有问题的

CREATE DEFINER=`root`@`localhost` EVENT `e_renewClueCycle` ON SCHEDULE EVERY 1 MINUTE STARTS '2015-12-09 02:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN
CALL `renewClueCycle`();
END

后来又手动call了一下存储过程`renewClueCycle`(),也没有问题,达到了预期的功能。

问题出在到了这个时间,数据库没有执行这个存储过程,后来百度了一下,终于找到了原因,mysql数据库有一个控制变量event_scheduler,这个变量值为ON时,数据库的事件才能生效。

用sql语句查看这个变量值

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

如果查询得到的value值为OFF,就表示这个功能没有打开,可以执行一下下面的语句来开启

SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;

相反,如果想关闭这个功能的话,就执行下面的语句

SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;

这个并不是什么技术问题,只是对没怎么接触过mysql的人来说可能不知道这个变量的存在

原文地址:https://www.cnblogs.com/quyixuanblog/p/5265943.html