对于mysql的计划任务须要注意如下两点mysql
1.否开启了此功能,SHOW VARIABLES LIKE 'event_scheduler';sql
若是没有开启须要在my.ini or my.cnf 中的
[mysqld]
添加 event_scheduler=ON数据库
2.若是客户端远程访问,确认是否受权用户:安全
ERROR 1044: Access denied for user: '@127.0.0.1 ' to database 'mysql'服务器
说明你没有将权限下放到远端链接账户上,因为mysql的安全性在不断的提升,权限设置默认是拒绝的,你必须本身开放权限。ide
在服务器上用mysql -h 192.168.0.1 -u root -p mysql命令登陆mysql数据库测试
而后用grant命令下放权限。spa
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'root-password' WITH GRANT OPTION;.net
GRANT ALL PRIVILEGES ON *.* TO root@127.0.0.1 IDENTIFIED BY 'root-password' WITH GRANT OPTION;code
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'root-password' WITH GRANT OPTION;
例如:
GRANT ALL PRIVILEGES ON *.* TO root@'%' identified by '123456'
注意:本身根据状况修改以上命令中的 “用户”“ip地址”“密码”。
完成此两步骤后可使用客户端进行任务的建立了,这里仅列出建立天天执行一次的定时任务,当前时间+6小时后开启,直接上代码:
CREATE EVENT `EVENT_EMULATE_STATISTICS` ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR ON COMPLETION NOT PRESERVE ENABLE DO CALL pro_event_emulate_statistics() ;
DROP PROCEDURE IF EXISTS `pro_event_emulate_statistics`; CREATE DEFINER = `root`@`%` PROCEDURE `pro_event_emulate_statistics`() BEGIN 自定义 END;
3.测试时须要注意服务器时间和本地时间是否一致,以避免测试时引发偏差
经过设定全局变量event_scheduler 的值便可动态的控制事件调度器是否启用。
查看是否event_scheduler开启 mysql> SHOW VARIABLES LIKE '%event%';
设置开启 mysql> SET GLOBAL event_scheduler=ON;
详细功能参考开源中国博客:http://www.oschina.net/question/4873_20927