创建预定事件时出现错误 #1064

Error #1064 while creating scheduled event

我有一个存储新闻的 table。有两种类型的新闻:简单新闻和定期新闻。定期新闻必须每年播出,并且必须在 30 天后隐藏。我无法在服务器上创建 cron 作业,所以我决定使用 MySQL 计划事件。 这是我的查询。


DROP EVENT IF EXISTS `update_news`;
DELIMITER $$

CREATE 
EVENT `update_news`
ON SCHEDULE EVERY 1 DAY STARTS '2015-07-15 00:00:00'
DO BEGIN

UPDATE `yakutsk-gf`.`app_news_item` 
SET `date` = DATE_ADD(`date`, INTERVAL 1 YEAR) 
WHERE `isCalendar` = '1' AND DATEDIFF(NOW(), `date`) > 30
ORDER BY `date` DESC;

END $$

DELIMITER ;

但是当我尝试执行它时,MySQL 抛出错误


DELIMITER ;
Ответ MySQL: 

#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 'DELIMITER' at line 1 

我试图找到解决问题的方法,但到目前为止一无所获。 仅供参考,mysql 版本为 5.5.43-0

从技术上讲,您不需要更改 DELIMITER 并使用 BEGIN...END 块,因为正文中只有一个语句。

这样试试

CREATE EVENT update_news
ON SCHEDULE EVERY 1 DAY STARTS '2015-07-15 00:00:00' DO
  UPDATE yakutsk-gf.app_news_item
     SET date = DATE_ADD(date, INTERVAL 1 YEAR) 
   WHERE isCalendar = '1' 
     AND DATEDIFF(NOW(), date) > 30
   ORDER BY date DESC;