189 8069 5689

mysql怎么开启事件 mysql 事件什么时候触发

linuxmysql怎么启动定时任务

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

成都创新互联是专业的错那网站建设公司,错那接单;提供成都做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行错那网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

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}

MYSQL定时执行事件

mysql要实现定时执行sql语句就要用到Event

具体操作如下:

先看看看event 事件是否开启

show variables like '%sche%';

如没开启,则开启。需要数据库超级权限

set global event_scheduler =1;

创建存储过程 update_a (注:就是你要执行的sql语句)

mysql create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id);

创建一个定时任务:event e_updateA

mysql create event if not exists e_updateA

- on schedule every 60 second ---设置60秒执行一次

- on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行

- on completion preserve

- do call update_a(); ---执行update_a()存储过程

创建Event之后,sql语句就定时执行一次。

关闭事件任务

mysql事件没执行

1、命令查看是否开启event_scheduleSHOWVARIABLESLIKE'event_scheduler'。

2、使用命令开启临时开启,重启mysql又还原回去。

3、修改配置永久修改配置文件的[mysqld]部分加上event_scheduler=ON。

如何查看mysql定时器的事件

mysql如何查看定时器有没有执行

1.查看是否开启evevt与开启evevt。

1.1、MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的。

show VARIABLES LIKE '%sche%';

1.2、开启evevt功能

SET GLOBAL event_scheduler = 1;

2.创建定时器的过程

2.1、创建测试表test

drop table if exists test;

create table test

(

id int(11) not null auto_increment primary key,

time datetime not null

) engine=innodb default charset=utf8;

2.2、创建evevt要调用的存储过程test_proce

delimiter //

drop procedure if exists test_proce//

create procedure test_proce()

begin

insert into test(time) values(now());

end//

delimiter ;

2.3、开启evevt(要使定时起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1)

执行show variables like 'event_scheduler';查看evevt是否开启;

若没开启执行set global event_scheduler='on';

2.4、创建事件test_event(其作用:每隔一秒自动调用test_proce()存储过程)

drop event if exists test_event;

create event test_event

on schedule every 1 second

on completion preserve disable

do call test_proce();

2.5、开启事件test_event


标题名称:mysql怎么开启事件 mysql 事件什么时候触发
转载注明:http://cdxtjz.com/article/doscggc.html

其他资讯