mysql计划任务每天定时执行

skip 发布于 2012/07/18 15:31
阅读 19K+
收藏 4
我想实现每天凌晨定时根据时间点的判定来更新om_courselist表:

CREATE EVENT course_listener

ON SCHEDULE AT TIMESTAMP '2012-07-18 00:00:00' | EVERY 1 DAY

ON COMPLETION PRESERVE

DO UPDATE `om_courselist` SET `status`=6 WHERE `status`=5 AND `closetime`<CURRENT_TIMESTAMP();

上面的计划任务添加失败,提示语句有问题,麻烦帮忙看下。我对比计划任务书写格式觉得自己写得格式应该没什么问题,而且不加“ AT TIMESTAMP '2012-07-18 00:00:00' |”就能正常执行,但是这样的话它就变成每天添加的这个点执行了。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 DAY ON COMPLETION PRESERVE DO UPDATE `om_courselist` SET `status`=6 WHERE `sta' at line 1
加载中
0
逝水fox
逝水fox

指定时间开始以指定频率执行试下这个,你用的at语法是在指定时间执行一次的意思。

CREATE EVENT `course_listener`
ON SCHEDULE EVERY 1 DAY STARTS '2012-07-18 00:00:00'
ON COMPLETION PRESERVE
ENABLE
DO
UPDATE `om_courselist` SET `status`=6 WHERE `status`=5 AND `closetime`<CURRENT_TIMESTAMP();

skip
skip
噢,原来这样啊,谢谢,你这个运行是正确的
0
鉴客
鉴客

单独执行那个 UPDATE 的 SQL 语句没问题?

skip
skip
没有报错,能正常执行
0
逝水fox
逝水fox
语法上没有见过这种at形和every形同时使用的
逝水fox
逝水fox
回复 @skip : 你想实现的是指定时间开始,以指定频率执行?
skip
skip
但是不一起用怎么达到确定时间点和确定频率的效果呢? schedule: AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP] 我看介绍是这么写的,以为'|'代表可以同时用的
0
红薯
红薯
我都是用navicat工具提供的界面来创建
skip
skip
的确很方便
返回顶部
顶部