问一个MYSQL计划任务的怪问题

zuoxingyu 2011-02-11 02:23:59
任务开关开启

mysql> show variables like '%event%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)

mysql>

--任务脚本如下:
drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;


然后SHOW EVENTS也能够看到这个任务。我把机器时间调整到2011-03-03 23:59:50 ,等待20秒,确保任务执行完成,再查EVENT_1表,里面没有写入记录。

网络上讲计划任务的,基本上都是用SECOND来说明,每秒写入一条记录,我测试也是成功的,但是我想每天执行一次,却失败了。

这个计划任务的作用是想用来做刷新日志,还有一些统计类的计算,用BAT文件已经可以做到,觉得维护起来不方便,数据迁移的时候还得去维护BAT文件,放到EVENT里,一个DUMP就全部搞定。

大家帮我看看啥原因。

...全文
219 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
maikelsong 2011-05-25
  • 打赏
  • 举报
回复
好帖--
王向飞 2011-02-12
  • 打赏
  • 举报
回复
等楼主今天来解释
iihero 2011-02-12
  • 打赏
  • 举报
回复
支持楼上的解释,改系统时间大多不靠谱。想验证,可以把按天schedule缩小成几秒schedule,一下子就知道是否正确了。
aleng18 2011-02-12
  • 打赏
  • 举报
回复
基本上都是用SECOND来说明,每秒写入一条记录,我测试也是成功的,但是我想每天执行一次,却失败了。
------天,很可能不是从0:01开始算,而是从任务开始日期+1天-1秒算第一天,等1天吧,绝对好用的~~
ACMAIN_CHM 2011-02-11
  • 打赏
  • 举报
回复
show events 先看一下。
feixianxxx 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoxingyu 的回复:]

我的操作步骤是
1:创建如上的任务
2:调整电脑时间到2011-03-03 23:59:50
3:查看表里是否有记录产生
[/Quote]
...试试 把start的时间调整为你现在时间的下一分钟。。
电脑时间别调整了。。也许读的不是电脑时间。。
mysqldbd 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zuoxingyu 的回复:]
引用 2 楼 mysqldbd 的回复:
drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;

没有看到你所说的一天执行一次的计划的标示。……
[/Quote]

是不是忘记开启时间了啊:

ALTER EVENT e_Set ON COMPLETION PRESERVE ENABLE;

执行上面这句再看看有了吗?
zuoxingyu 2011-02-11
  • 打赏
  • 举报
回复
我的操作步骤是
1:创建如上的任务
2:调整电脑时间到2011-03-03 23:59:50
3:查看表里是否有记录产生

rucypli 2011-02-11
  • 打赏
  • 举报
回复
我这边试了没问题
mysqldbd 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zuoxingyu 的回复:]
引用 2 楼 mysqldbd 的回复:
drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;

没有看到你所说的一天执行一次的计划的标示。……
[/Quote]

恩,看到了,你试试用天换成秒试试看。
mysqldbd 2011-02-11
  • 打赏
  • 举报
回复
-- 或者试试看吧,你设置23点,人家不是要等到晚上23点再执行啊。

drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 1 day STARTS '2010-11-15 00:00:00' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;
zuoxingyu 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mysqldbd 的回复:]
drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;

没有看到你所说的一天执行一次的计划的标示。
[/Quote]

EVERY 1 day

这里是任务的调度频度。
mysqldbd 2011-02-11
  • 打赏
  • 举报
回复
drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 86400 SECOND STARTS '2010-11-15 00:00:00' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;


用上面的,你再试试看啊!
mysqldbd 2011-02-11
  • 打赏
  • 举报
回复
drop event if exists e_Set;
CREATE EVENT e_Set
ON SCHEDULE EVERY 1 day STARTS '2010-11-15 23:59:59' DO
begin
INSERT INTO EVENT_1 VALUES(NOW());
end;

没有看到你所说的一天执行一次的计划的标示。
小小小小周 2011-02-11
  • 打赏
  • 举报
回复
每天回复,即得10分

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧