mysql使用Navicat创建定时执行任务
使用Navicat创建定时执行任务:
1. 准备需要定时执行的sql脚本:
如定时更新时间:
update your_table y set y.update_time = NOW() where y.id = '123';
2. 创建函数:
① 进入navicat找到函数选择新建函数,填写名称并选中"过程"后点击确定。
② 点击确定后会进入函数定义页面:
③ 在begin和end之间写要执行的sql语句并保存 eg:
3.创建事件:
① 在定义里写 call + 上面定义的函数名 eg:
② 在定义选项里定义执行时间范围(下面的是从STARTS的时间开始执行,到ENDS时间结束,每10秒执行一次)eg:
③ 在计划页面下面可以查看上次运行时间,按ctrl + S 可以刷新时间。
这样就完成了mysql的定时任务的创建。
任务部署好后如果不执行,排查上述步骤是否做的正确,可能遇到的问题:
1. 无法创建函数,创建函数报错时执行如下语句:
set global log_bin_trust_function_creators=TRUE;
2. 定时任务不执行解决:
① 查看定时执行是否打开:
show VARIABLES like 'event_scheduler'
如果是"ON"则是可以执行定时任务,如果是"OFF"代表关闭,
执行下面语句打开定时任务:
set GLOBAL event_scheduler = ON
② 定时任务状态为disable:
制定好定时任务后可以执行下面语句查看任务状态:
SHOW EVENTS
如果Status显示disable,则代表定时任务不能执行,可以执行下面语句修改为enabled可执行状态 (其中yourName写的是你的定时任务的名称):
ALTER EVENT yourName ON COMPLETION PRESERVE ENABLE;
或者通过定义界面修改状态为可执行:
如果经过上面问题的排查和问题的修改后还是不能执行定时任务,可以尝试单独执行函数,查看函数是否正确,其次可以把之前定义的函数和事件全部删除重新创建,应该就能正常执行了。