Mysql数据库设置定时任务

最近手头在做一个拍卖的电商项目。

中间需要将到点的拍卖会状态设置为进行中。

我们的解决方案是Mysql的定时器任务,这里进行一个简单的总结。

1.使用范围

不是所有的MySQL版本都支持,Mysql 5.1之后才开始支持的新特性

2.涉及到的mysql的语法

#查询MySQL计划任务支持是否开启

show variables like ‘%sche%‘;

#开启MySQL计划任务支持

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1;

SET @@global.event_scheduler = 1;

#关闭MySQL计划任务支持

SET GLOBAL event_scheduler = OFF;

SET @@global.event_scheduler = OFF;

SET GLOBAL event_scheduler = 0;

SET @@global.event_scheduler = 0;

#如果计划任务存在,则删除计划任务

DROP EVENT IF EXISTS testInsert;

#创建计划任务

CREATE EVENT IF NOT EXISTS testInsert

ON SCHEDULE EVERY 3 SECOND

ON COMPLETION PRESERVE

DO INSERT INTO aa(`name`,sex) VALUES(‘aa‘,2),(‘bb‘,1);

#开启计划任务

ALTER EVENT testInsert ENABLE;

#关闭计划任务

ALTER EVENT testInsert DISABLE;

#查询MySQL计划任务支持是否开启

show variables like ‘%sche%‘;

#开启MySQL计划任务支持

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1;

SET @@global.event_scheduler = 1;

#关闭MySQL计划任务支持

SET GLOBAL event_scheduler = OFF;

SET @@global.event_scheduler = OFF;

SET GLOBAL event_scheduler = 0;

SET @@global.event_scheduler = 0;

#如果计划任务存在,则删除计划任务

DROP EVENT IF EXISTS testInsert;

#创建计划任务

CREATE EVENT IF NOT EXISTS testInsert

ON SCHEDULE EVERY 3 SECOND

ON COMPLETION PRESERVE

DO INSERT INTO aa(`name`,sex) VALUES(‘aa‘,2),(‘bb‘,1);

#开启计划任务

ALTER EVENT testInsert ENABLE;

#关闭计划任务

ALTER EVENT testInsert DISABLE;

最后,给一个完整的测试用例。

mysql定时器是系统给提供了event,下面创建表:
create table mytable (
id int auto_increment not null,
name varchar(100) not null default ‘‘,
introduce text not null,
createtime timestamp not null,
constraint pk_mytable primary key(id)
)

创建存储过程,这里的存储过程主要提供给mysql的定时器event来调用去执行:
create procedure mypro()
BEGIN
insert into mytable (name,introduce,createtime) values (‘1111‘,‘inner mongolia‘,now());
end;
这里只是简单的写了一下,只是为了说明例子。

紧接着创建mysql的定时器event:
create event if not exists eventJob 
on schedule every 1 second
on completion PRESERVE
do call mypro();
这里设置为每一秒执行一次

至此所有的准备工作已经写完了,做完这些,mysql要想利用定时器必须的做准备工作,就是把mysql的定时器给开启了:
SET GLOBAL event_scheduler = 1;  -- 启动定时器
SET GLOBAL event_scheduler = 0;  -- 停止定时器

紧接着还要开启事件:
ALTER EVENT eventJob ON  COMPLETION PRESERVE ENABLE;   -- 开启事件
ALTER EVENT eventJob ON  COMPLETION PRESERVE DISABLE;  -- 关闭事件

SHOW VARIABLES LIKE ‘%sche%‘; -- 查看定时器状态

至此,你去数据库里面的表mytable里面看下,系统会每隔一秒去插入一条数据,嘻嘻,任务完成了。
select * from mytable

时间: 2024-11-06 03:12:54

Mysql数据库设置定时任务的相关文章

MySQL数据库设置远程访问权限方法小结

http://www.jb51.net/article/42441.htm MySQL基础知识第一期,如何远程访问MySQL数据库设置权限方法总结,讨论访问单个数据库,全部数据库,指定用户访问,设置访问密码,指定访问主机. 1,设置访问单个数据库权限 复制代码代码如下: mysql>grant all privileges on test.* to 'root'@'%'; 说明:设置用户名为root,密码为空,可访问数据库test 2,设置访问全部数据库权限 复制代码代码如下: mysql>g

MySQL数据库设置为只读及测试【转】

转自 mysql只读模式的设置方法与实验 - yumushui的专栏 - CSDN博客http://blog.csdn.net/yumushui/article/details/41645469 在MySQL数据库中,在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-slave的设置和关系. 经过实际测试,对于mysql单实例数据库和master库,如果需要设置为只读状态,需要进行如下操作和设置:      将MySQL设置为只读状态的命令: # mysql -uroot -

Confluence 6 MySQL 数据库设置准备

请查看 Supported Platforms 页面来获得 Confluence 系统支持的 MySQL 数据库版本.你需要在安装 Confluence 之前升级你的 MySQL 数据库. 如果你从其他的数据库中迁移到使用 MySQL 数据库,包括你从嵌入的内置评估数据库迁移到 MySQL ,在进行安装之前,请阅读 Migrating to Another Database 中的内容. Confluence 不能在 MySQL 变种版本,例如,MariaDB (CONFSERVER-29060)

mysql数据库设置远程连接权限

原文 问题现象 mysql 安装完毕,本机登录正常,在远程输入正确账号密码登录连接时报错如下 问题原因 远程IP没有登录权限,root用户默认只能在localhost也就是只能在本机登录,需要设置允许其他IP登录权限. 解决方案 1. 在服务器内部登录数据库,然后执行 grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; 此语句意思是给root用户在任何IP都可以登录数据库,操作任何

navicat软件设置连接mysql数据库

navicat软件设置连接mysql数据库 适用范围及演示使用工具 适用范围:mysql所有系列(含Linux和Windows系统下的mysql) 演示使用工具:Navicat 8.0 MySQL 演示系统:Windows2003系统 navicat连接mysql数据库设置方法/步骤 第1步:下载并安装navicat软件,本成功安装到自己电脑中,安装成功后打开开始菜单组中的navicat菜单下的"Navicat for MySQL"并单击打开. 第2步:单击navicat软件左上角中的

MySQL数据库远程访问权限如何打开(两种方法)

MySQL数据库远程访问权限如何打开(两种方法) 下载GPL版本安装 MySQL Community Edition(GPL) Community (GPL) Downloads 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库.缺省状态下,mysql的用户没有远程访问的权限. 下面介绍两种方法,解决这一问题. 1.改表法 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "

CentOS7安装MySQL并设置远程登录

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1 下载并安装MySQL官方的 Yum Repository [[email protected] ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概25KB

CentOS7安装MySQL并设置远程登陆

1 下载并安装MySQL官方的 Yum Repository [[email protected] ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了. [[email protected] ~]# yum -y install mysql57-community-rel

如何用navicat连接阿里云内网的mysql数据库

1.首先用ssh连接阿里云服务器 2.连接mysql数据库 设置完这两项就可以连接阿里云内网mysql数据库 原文地址:https://www.cnblogs.com/SeaWxx/p/9969007.html