如何写mysql的定时任务

如何写mysql的定时任务,第1张

mysql实现定时任务是有一个时间调度器,所以首先要查看这个时间调度器是否开启。

查看的命令:

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() --也就是之前定义的函数

在“计划”选项卡中设置 执行时间,这里我选择的是每天。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7633248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存