MySQL定时执行脚本(计划任务)实例

MySQL定时执行脚本(计划任务)实例,第1张

查看event是否开启

代码如下

show

variables

like

'%sche%'

事件计划开启

代码如下

set

global

event_scheduler

=1

创建存储过程test

代码如下

CREATE

PROCEDURE

test

()

BEGIN

update

examinfo

SET

endtime

=

now()

WHERE

id

=

14

END

创建event

e_test

代码如下

create

event

if

not

exists

e_test

on

schedule

every

30

second

on

completion

preserve

do

call

test()

每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.

关闭事件任务

代码如下

alter

event

e_test

ON

COMPLETION

PRESERVE

DISABLE

开户事件任务

代码如下

alter

event

e_test

ON

COMPLETION

PRESERVE

ENABLE

以上测试均成功,测试环境为mysql

5.4.2-beta-community

mysql

community

server(GPL)

以上的相关内容就是对MySQL定时执行的介绍,望你能有所收获。

mysql

计划任务重启后消失

我们只要修改一配置即可

event_scheduler在mysql的config中设置为OFF有关。去mysql中将配置改为ON则就搞定了。

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的定时任务一般用event(事件)来完成,触发器无法完成。一、通过mysql的命令行客户端来完成

1、set global event_scheduler =1//开启event_scheduler

执行这个语句如果出现,可在mysql的配置文档中设置[mysqld]段中添加 event_scheduler=ON

如果重启mysql;这种情况下依然出错,Error Code: 1290. The MySQL server is running with the --event-scheduler=DISABLED

or --skip-grant-tables option so it cannot execute this statement,这个错误是说启动服务器时如果指定了--skip-grant-tables选项,则event_scheduler则自动被设置为DISABLED。命令行或配置文件的设置都会被覆盖。建议重现安装mysql或是修改启动参数(在系统服务中指定)。

查看event_scheduler状态:show status like '%event%'或SELECT @@event_scheduler

2、CREATE PROCEDURE Mypro() //创建存储过程

BEGIN

update userinfo SET endtime = now() WHERE id = '155'

END

3、创建event My_enevt,每隔三十秒执行一次

create event if not exists e_test

on schedule every 30 second

on completion preserve

do call Mypro()

4、关闭事件

alter event e_test ON COMPLETION PRESERVE DISABLE

5、开启事件

alter event e_test ON COMPLETION PRESERVE ENABLE

语法:

CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION

[NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] DO sql_statement

schedule: AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP]

[ENDS TIMESTAMP] INTERVAL: quantity {YEAR | QUARTER | MONTH | DAY | HOUR |

MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |

HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存