mysql 如何定时执行

本文主要转自 http://www.2cto.com/database/201202/120821.html

还加入一些自己在执行过程中遇到的问题和解决方法。

5.1版本以后,MYSQL支持定时执行(event)的功能,就跟linux的crontab差不多。
 
先查看一下你的MSYQL版本,查询版本信息的SQL语句:
 
select VERSION()
确定版本支持之后,再查看一下event是否开启:
 
show variables like ’%sche%’;
如果未开启,那如何开启呢?
 
show VARIABLES LIKE ’%sche%’;
set global event_scheduler =1;
show VARIABLES LIKE ’%sche%’;
一般定时执行有2种:
 
1、从具体一个时间点开始,每隔一段时间执行一次;
 
从现在开始,每30秒执行一次
 
create event if not exists e_test
on schedule every 30 second starts now()
on completion preserve
do
INSERT into sdb_yoyi (yoyiscid,orderid) VALUES(2,3)
2、从具体一个时间点开始,在当日的某个时间点进行执行;
 
每个月的一号凌晨1点执行
 
create event if not exists e_test2
on schedule every 1 month starts DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
on completion preserve
do
INSERT into sdb_yoyi (yoyiscid,orderid) VALUES(2,3)
 
也可以对事件任务进行关闭:
 
alter event e_test ON
COMPLETION PRESERVE DISABLE;
 
对已经关闭的事件任务进行开启:
 
alter event e_test ON
COMPLETION PRESERVE ENABLE;

我的实践:

我想要的是往test数据库的gpsdemo表定时插入数据:

开始是在MySQL的图形界面输入语句:

create event if not exists e_test
on schedule every 30 second starts now()
on completion preserve
do
INSERT INTO gpsdemo (xxx)values (xxx)

出现错误:


整了一会儿没有解决,还好我机智,直接在命令行输入,如下:

cmd

d:

D:\mysql-5.6.24-win32.1432006610\mysql-5.6.24-win32\bin

进入MySQL的安装路径

mysql -u root -p test

test数据库

password:(输入密码)

create event if not exists e_test
on schedule every 30 second starts now()
on completion preserve
do
INSERT INTO gpsdemo (xxx)values (xxx);(记得这个分号)

OK~~~~完成了!!!

2016.8.12北京,上午天儿有点暗,中午下了场大暴雨,奥运到风味的那小段路被淹没了,分分钟看海的节奏~

还有三天就放假了~啦啦啦~~~

### 设置 MySQL 定时任务以自动执行存储过程 #### 启用事件调度器 为了使定时任务能够正常工作,需确认 `event_scheduler` 参数已启用。可以通过查询变量来验证其状态: ```sql SHOW VARIABLES LIKE 'event_scheduler'; ``` 如果返回的结果显示该参数未开启,则可通过如下命令将其设为 ON[^5]。 #### 创建用于测试的简单存储过程 假设有一个名为 `test_procedure` 的存储过程,此过程仅向数据库中的特定表插入记录作为例子: ```sql DELIMITER // CREATE PROCEDURE test_procedure() BEGIN INSERT INTO example_table (column_name) VALUES ('some value'); END// DELIMITER ; ``` 以上代码段定义了一个简单的存储过程,它会在每次被调用的时候往指定表格里增加一行数据[^4]。 #### 配置定时任务 接下来配置一个每分钟运行一次上述存储过程的任务。这通过创建一个新的 Event 来完成: ```sql CREATE EVENT IF NOT EXISTS my_event ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP DO CALL test_procedure(); ``` 这段 SQL 命令设置了每隔一分钟就启动并执行 `CALL test_procedure()` 这一操作的时间间隔型事件[^3]。 请注意,在实际应用环境中应当根据需求调整 `EVERY` 子句后面的频率以及 `STARTS` 和可能存在的 `ENDS` 时间戳。 #### 检查与管理现有 Events 可以利用以下指令获取当前服务器上所有的 events 列表及其详情: ```sql SELECT * FROM information_schema.events; ``` 对于不再需要使用的 event 可以使用 DROP 删除之;而对于那些想要暂停或重新激活的则可修改其属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值