由于论坛财富值每月免费赠送部分都是人工每月初收到去执行一个sql语句。
经常因为某些原因,就忘记了赠送财富值的问题。
于是决定用计划任务来实现。每月自动执行sql语句。
在google的帮助下。
我发现了自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务。
当时也没怎么看直接就准备用这个功能来实现我要执行的计划任务(周期任务)。
具体语法如下:
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}
参照语法我的语句是
CREATE EVENT free ON SCHEDULE EVERY 1 MONTH DO UPDATE `sends`.`bbs_money` SET `free` = '150';
然而一直都是都有语法错误
ERROR 1064 (42000): 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 EVENT free ON SCHEDULE EVERY 1 MONTH DO UPDATE `sends`.`bbs_money` SET `free` = '150';
无论怎样排查也没发现什么错误。。。
万能的google似乎也没什么办法,正在忧郁之时,想起了自己mysql的版本似乎太低,于是通过
mysql -V
查看了当前数据库的版本为5.0,这就解释了为什么会出现语法错误。
======================================================================
因为暂时没时间升级数据库版本,所以只有通过linux系统自带的crontab来执行sql任务。
然后新建个账户free:
CREATE USER 'itest'@'localhost' IDENTIFIED BY 'abc';
并赋予仅对free执行update的权限:
GRANT UPDATE (
`free`
) ON `sendscc`.`bbs_money` TO 'free'@'localhost';
这样就可以对安全性会有一定增加。
现在来添加计划任务:
]#crontab -e
00 00 1 * * /usr/local/mysql/bin/mysql -ufree -pabc -h localhost -e 'UPDATE `sends`.`bbs_money` SET `free` = 150';
这样就可以让mysql执行周期任务了。不过安全性低,所以尽快升级mysql,然后使用自带功能是最好的。
分享到:
相关推荐
在mysql中我们可以直接进行一些参数设置让它成定时为我们执行一些任务了,这个虽然可以使用windows或者linux中的计划任务实现,但是mysql本身也能完成
附件为两个.bat脚本文件,用于在Windows下备份MySQL数据库,一个是备份数据库文件,另一个是将数据库导出sql脚本。需要自己修改数据库名称,...这两个批处理文件都是可以通过Windows任务计划直接调用的,已经测试过了。
数据库定时任务执行脚本,数据库脚本,定时任务,为了避免写大量的Java代码和减轻应用服务器压力
mysql每15天定时备份-自动创建计划任务,解压出来修改数据库的配置机、保存路径,执行后,如果是服务器的话,可以去系统的计划任务中配置相关的任务执行时间,不懂可以留言
本文实例讲述了mysql的计划任务与事件调度。分享给大家供大家参考,具体如下: mysql事件是基于预定义的时间表运行的任务,因此有时它被称为预定事件。mysql事件也被称为“时间触发”,因为它是由时间触发的,而不是...
windows下如何定期备份mysql数据库,先写一个脚本文件,然后添加到windows任务计划里执行
主要介绍了MySQL数据库Event定时执行任务
任务执行者可以更新任务的进展情况,标记任务的完成情况,方便任务发布者了解任务的进展。 团队协作:平台提供了团队协作的功能,用户可以在任务的评论区进行讨论、提问和回复,促进团队成员之间的交流和合作。 ...
第一种是利用Mysql本身实现,制定event定时任务,可以借助Navicat For Mysql或其他数据库开发工具去做; 第二种实现方式是利用linux的定时任务,这个是利用Linux系统自带任务管理工具实现的。 一、Mysql中event定时...
任务执行者可以更新任务的进展情况,标记任务的完成情况,方便任务发布者了解任务的进展。 团队协作:平台提供了团队协作的功能,用户可以在任务的评论区进行讨论、提问和回复,促进团队成员之间的交流和合作。 提醒...
这是我自己写的一个每天定时执行一次发布超过七天的岗位信息通过mysql数据库中的事件定时执行对应的存储过程,里面有详细的解释,无论你有没有接触过,都能看懂我写的意思!
此批处理,是为一位朋友写的在Windows下自动备份Mysql数据库。 请先用记事本打开 MysqlAuto...修改好后,用window计划任务,添加此任务进去。就可以自动执行了。 作者:红色标记 压缩包里有联系方式,可以交流沟通。
解决Dolphinscheduler中从Mysql同步分表数据至Doris或者PG库的问题
同时代码还会生成sqlldr命令需要用到的control文件和bat文件,以及连接Oracle的配置文件,只要将MySQL导出的数据文件合到一起,执行bat文件,即可完成数据导入到Oracle的任务。所有文件都是以导入导出的那张表的表名...
事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。...
今天遇到了个需要每天定时执行的任务,在mysql数据库里面提供了这样的功能,正好整理下分享出来。 1.首先检查是否开启了定时任务 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%'; 将事件计划开启 : SET...
Springboot整合Quartz实现定时任务数据库动态配置,新增任务、修改cron表达式、暂停任务、恢复任务、删除任务等操作
MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能
3、SpringCloudSchedule定时任务(使用mybatis读写mysql数据库, spring实现定时任务, 按照间隔时间或固定时间方式执行定时任务) 4、定时自动运行任务(在数据库中设置好定时时间,及运行的程序,及参数) 5、C#...