查看的命令:
show variables like 'event_scheduler'
如果没有打开,则设置打开。设置的命令是:
set global event_scheduler = ON或set global event_scheduler = 1
确定打开事件调度器后,我们可以创建一个定时任务。
创建定时任务的语法为:
create event 定时任务名称
ON schedule 定时时间
do
定时任务所要执行的sql
example:每隔一分钟往表tt里插入一条数据
create event insert_tt
ON schedule every 1 MINUTE
do
insert into tt values(1)
如果要执行多条sql则可用多个do
create event insert_tt
ON schedule every 1 MINUTE
do
insert into tt values(1)
do
.......
使用命令查看所有的定时任务及其状态:
show processlist
如果要停掉某个定时任务可以使用:
alter event 定时任务名 ON
COMPLETION PRESERVE DISABLE
example:
alter event insert_tt ON
COMPLETION PRESERVE DISABLE
开启某个定时任务:
alter event 定时任务名称 ON
COMPLETION PRESERVE ENABLE
一个原因是没有关闭MySQL的定时任务计划,每天凌晨MySQL会默认运行一个自动更新的定时任务计划,如果没有关闭,就会自动断开连接。
解决办法:
1、这是一个基本的权限问题。去MySQL安装目录下,右键单击MySQL文件夹,进入安全选项卡下,单击“编辑用户组”,在“组和用户”选择你的电脑的用户,选择允许的情况下所有的项,应用并关闭。
2、这是一个Windows的任务计划服务,删除即可,开始右键/计算机管理/任务计划程序/任务计划程序库/MySQL/Installer/ManifestUpdate,右键单击并选择“禁用”。
另一个原因是MySQL数据库的数据库连接有生存期限制,如果在规定时间内没有 *** 作数据库连接对象,连接就会被关闭。也就是常说的MySQL的8小时问题
MySQL服务器默认连接的“wait_timeout”是8小时,也就是说一个Connection空闲超过8个小时,MySQL将自动断开该 Connection。但是数据库连接池并不知道连接已经断开了,如果程序正巧使用到这个已经断开的连接,程序就会报错误。
1、启动Navicat for MySQL,新建数据库连接,打开数据库,可能有点啰嗦。
2、可以先查看定时任务的是否开启。通过以下命令:show variables like '%sche%'
3、如果其设置值为为 OFF 或 0 ,通过执行下列语句,来开启event_scheduler,set global event_scheduler =1,把设置为设为ON 或 1。
4、新建一个函数 ,取名为update_qiandao ,内容为 UPDATE week7_user SET isqiandao = 0
5、参照上图,新建一个事件 ,在定义里写 call update_qiandao() --也就是之前定义的函数
在“计划”选项卡中设置 执行时间,这里我选择的是每天。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)