0

EVENT を作成すると、基本的に次の 2 つのことが行われます。

  1. SELECT30 日を超えINSERTachieveテーブルに追加された行。
  2. DELETEtrendsテーブル内で 30 日以上経過した行。

2 つのスクリプトを個別にテストしたところ、どちらも正常に動作しましたが、EVENT に配置すると構文エラーが発生しました。

イベント本文でユーザーINSERT INTOまたはDELETEスクリプトのみを使用すると、問題なく保存されます。

スクリプトは次のとおりです。

CREATE DEFINER=`root`@`localhost` 
    EVENT `trend_decayer` ON SCHEDULE EVERY 1 DAY 
    STARTS '2016-08-30 00:00:00' ON COMPLETION NOT PRESERVE ENABLE 
    COMMENT 'Decay trends that are older than 30 days' 
DO
INSERT INTO `achieve` 
    SELECT *, FROM_UNIXTIME(`trends`.`timestamp`) AS `datetime` 
    FROM `trends`
    WHERE `t`.`timestamp` < UNIX_TIMESTAMP(CAST(DATE_SUB(NOW(), INTERVAL 30 DAY) AS DATETIME)) 
    ORDER BY `datetime` DESC;
DELETE 
    FROM `trends` 
    WHERE `timestamp` < UNIX_TIMESTAMP(CAST(DATE_SUB(NOW() , INTERVAL 30 DAY) AS DATETIME));

エラーメッセージは次のとおりです。

MySQL said: #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 
'INTO `achieve` 
    SELECT *, FROM_UNIXTIME(`timestamp`) AS `datetime` FR' at line 2`
4

0 に答える 0