mysql计划事件启动及mysql服务启动
最近写了一个定时更新的事件,在保存的时候报“事件计划已关闭,事件只能在服务器启动并开启事件计划时才能处理”,解决方法如下:
1.先查看mysql计划事件的状态:
SHOW VARIABLES LIKE 'event_scheduler'
如果value值为ON则表示开启状态,OFF则位关闭。
2.开启计划事件的指令的四种方法为:
SET GLOBAL event_scheduler = ON; SET @@global.event_scheduler = ON; SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1;
关闭则是将语句中的ON改成OFF,1改成0。
查询表的时候报“Can’t connect to MySQL server on ‘localhost’ (10061)”,是mysql服务器没有启动,下面两种方式都可以启动:
- 以管理员身份在dos下进入mysql的bin目录下:D:\mysql-5.7.16-winx64\bin,执行net start MySQL启动进程,关闭服务执行net stop MySQL。
- 右键我的电脑到管理中找到mysql进程,右键选择启动或者直接点击左边的启动来启动进程。
*计划事件的时间设置
SELECT NOW(),CURDATE(),CURTIME()
返回2017-06-20 16:37:57,2017-06-20,16:37:57
--每个月的21号凌晨1 点执行计划事件 (里面的日期只能用减号拼出来,要是用加号指定日期会随每月天数的不同而变化)
CREATE EVENT EVENT2
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-21 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL events();
END
事件是一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行
提醒:虽然这里用set global event_scheduler = on语句开启了事件,但是每次重启电脑。或重启mysql服务后,会发现,事件自动关闭(event_scheduler=OFF),所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,只需要在my.ini配置文件的[mysqld]部分加上event_scheduler=ON 即可。
*还有mysql服务老是自动关闭的问题,解决方法:
我的电脑-右击-管理-服务-找到mysql服务 双击新窗口中 -》恢复 -》 第一次失败设置为 重新启动服务
下面重置失败计数 设置为0天 重新启动服务 设置0分钟