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的人来说可能不知道这个变量的存在