用于删除旧记录的MySQL事件会引发错误#1064

时间:2014-06-12 08:53:05

标签: mysql events

我正在尝试在MySQL(我的第一次)中创建一个事件,该事件将删除“报告”表中超过3个月的所有记录。

该活动应该每天凌晨3:00开始。报告表的字段为“已创建”,类型为DATETIME。

这是我为创建活动而提出的代码:

CREATE 
    EVENT `delete_reports`
    ON SCHEDULE
        EVERY 3 DAY_HOUR
    DO BEGIN
        DELETE FROM `reports` WHERE `created` < DATE_SUB(NOW(), INTERVAL 3 MONTH)

但是这会引发以下错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第6行的''附近使用正确的语法

我理解1064错误是指语法问题,但在查找了几个不同的示例后,我仍未设法让它工作。

任何建议都会非常感激!

1 个答案:

答案 0 :(得分:0)

你错过了END,你应该更改分隔符。或者省略BEGIN

所以,就像这样:

DELIMITER $$
CREATE EVENT `delete_reports`
ON SCHEDULE
    EVERY 3 DAY_HOUR
DO BEGIN
    DELETE FROM `reports` WHERE `created` < DATE_SUB(NOW(), INTERVAL 3 MONTH);
END $$
DELIMITER ;

或者像这样:

CREATE EVENT `delete_reports`
ON SCHEDULE
    EVERY 3 DAY_HOUR
DO 
    DELETE FROM `reports` WHERE `created` < DATE_SUB(NOW(), INTERVAL 3 MONTH);