2015-07-15 2 views
-1

У меня есть таблица, в которой хранятся новости. Существует два типа новостей: простые и запланированные новости. Запланированные новости должны отображаться каждый год и должны быть скрыты через 30 дней. Я не могу создать задание cron на сервере, поэтому решил использовать запланированные события MySQL. Это мой запрос.Ошибка # 1064 при создании запланированного события


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 

Я пытался найти способы, чтобы исправить эту проблему, но до сих пор ничего не найдено. FYI, MySQL версии 5.5.43-0

+0

Выполненное в несколько новой версии (MariaDB 10.0.x): Нет проблем вообще. –

+0

Аналогично - без проблем. –

ответ

1

Технически вам не нужно менять 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; 
Смежные вопросы