查看mysql事件是否已开启,ON开,OFF关。
SHOW VARIABLES LIKE 'event_scheduler'
如果返回的是off表示当前是关闭状态,如果是on当前已经开启了计划任务。
在mysql程序的目录下找到my.cnf文件,添加一个项:event_scheduler = 1
保存后重启mysql服务即可,重启服务可以在服务管理里面找到
也可以用脚本来实现:
mysql event_scheduler
开启event_scheduler sql指令:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
相反,关闭event_scheduler指令:
SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;
1:新建存储过程。
use 数据库名;
DELIMITER $$
DROP PROCEDURE IF EXISTS `prc_del_clicklog_log`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `prc_del_clicklog_log`(IN date_inter INT)
COMMENT '自动删除日志'
BEGIN
DELETE FROM statistics_ip WHERE (TO_DAYS(NOW()) - TO_DAYS(created_at))>=date_inter;
-- DELETE FROM statistics_ip WHERE DATEDIFF(NOW(),created_at) >= date_inter;
END$$
DELIMITER ;
2:新建事件
CREATE EVENT 事件名
ON SCHEDULE EVERY 1 MINUTE #一分钟执行一次
ON COMPLETION PRESERVE ENABLE #设置该事件为启动状态,执行完该代码会立刻执行该事件
DO call 存储过程名(天数);#因一执行完该sql就会立刻调用存储过程,请检查存储过程中是否有修改和删除语句,确认无误后方可执行。也可使用下面语句
CREATE EVENT 事件名
-- ON SCHEDULE EVERY 1 DAY STARTS '2020-03-31 17:24:00' #设置起始时间
ON SCHEDULE EVERY 1 MINUTE #一分钟执行一次
-- ON COMPLETION PRESERVE ENABLE #设置该事件为启动状态,执行完该代码自动启动该事件
ON COMPLETION PRESERVE DISABLED #设置该事件为关闭状态,执行完该代码不会启动该事件
DO call 存储过程名(天数);
若想启动为启动的事件
ALTER EVENT 事件名
DISABLE|ENABLE#不可执行|可执行
3:修改事件执行周期
#修改事件执行时间为每天凌晨1点。
ALTER EVENT 事件名
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR);
如果在新建存储过程中报错,而确定sql语句没有错的话,请检查是否多写了空格!!!!
4:查看存储
show procedure status;
或
select name from mysql.proc where db=’数据库名’;
5:查看事件
show events;
6:删除存储过程
drop procedure 存储过程名;
7:删除事件
drop event 事件名;
mysql定时删除几天前的数据
最新推荐文章于 2024-08-17 14:20:47 发布
本文详细介绍了如何在MySQL中开启和管理事件调度器,包括设置事件的周期、启用和禁用事件,以及创建和删除存储过程和事件。同时,提供了实用的SQL指令和示例,帮助读者理解和操作MySQL事件。
3184

被折叠的 条评论
为什么被折叠?



