创建预定事件时出现错误 #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;
我有一个存储新闻的 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;