mysql----event不执行

        mysql事件多用于周期性地执行一些语句,例如每天.....,是一种很方便的机制,但是最近工作中发现linux环境下,改了系统时间后有些事件便不再执行了。后经过在ubuntu16.04+mysql5.7.29环境下多次复现得到如下结论:

  1. 修改系统时间会影响一些事件的执行情况;
  2. 如果改后的时间被当前系统时间大、晚,则事件调度不受影响;
  3. 如果改后的时间被当前系统时间小、早,则事件不再调度,此时应关闭/打开事件调度器解决,具体如下:
set global event_scheduler = 0;
set global event_scheduler = 1;

     实验步骤如下:

1.    创建表

mysql> show create table second_tb;
+-----------+--------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                   |
+-----------+--------------------------------------------------------------------------------------------------------------------------------+
| second_tb | CREATE TABLE `second_tb` (
  `t` datetime DEFAULT NULL,
  `name` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-----------+--------------------------------------------------------------------------------------------------------------------------------+

2.  创建事件

delimiter //

CREATE EVENT second_tb_event 
ON SCHEDULE EVERY 5 second 
STARTS CURRENT_TIMESTAMP
ON COMPLETION PRESERVE
DO BEGIN
    insert into second_tb value (now(),concat('name',DATE_FORMAT(now(),'_%H_%i_%s')));
END //

delimiter ;

 

然后通过频繁修改系统时间看表中新数据的插入情况便可得出以上结论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值