2016-02-24 65 views
1

當數據庫無法識別時間戳我想創建一個事件重置場從2016年2月23日00:00:00數據庫爲什麼創建事件

CREATE EVENT reset_count 
ON SCHEDULE 
EVERY 72 HOUR STARTS '2016-02-23 00:00:00' 
ON COMPLETION PRESERVE 
ENABLE 
DO BEGIN 
UPDATE table_1 SET count1 = 0; 

然後開始,出現以下錯誤: 你的sql語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以在第7行的''附近使用正確的語法。

看起來數據庫無法識別'2016-02-23 00:00:00'。爲什麼?

+0

的'語法的語句結尾使用「」附近'指向一個錯誤。它看起來像只有''END'關鍵字纔會與'BEGIN'一起使用。 –

+0

但是在這種情況下'BEGIN/END'可能不需要,因爲在這個事件中你只執行一個'UPDATE'語句。他們將需要分組多個報表。 –

+0

當我輸入UPDATE table_1 SET count1 = 0;然後按「enter」鍵,錯誤立即出現,不允許再按任何單詞。 –

回答

1

您使用了BEGIN而沒有END,也可能是分隔符問題。

嘗試以下操作:

DROP EVENT IF EXISTS `reset_count`; 
CREATE EVENT `reset_count` 
ON SCHEDULE EVERY 72 HOUR STARTS '2016-02-23 00:00:00' 
ON COMPLETION PRESERVE 
ENABLE 
DO 
UPDATE table_1 SET count1 = 0; 

如果分隔符問題出現:

delimiter // 
CREATE EVENT `reset_count` 
ON SCHEDULE EVERY 72 HOUR STARTS '2016-02-23 00:00:00' 
ON COMPLETION PRESERVE 
ENABLE 
DO 
UPDATE table_1 SET count1 = 0; 
// 

編輯:

注:

  • 檢查event scheduler是否爲on

    SELECT @@event_scheduler;

  • 如果event schedulerOFF,那麼你需要設置 event_schedulerON

    SET GLOBAL event_scheduler = ON;

更多:

BEGIN ... END語法用於寫入複合語句,它可以 存儲的程序中的顯示(存儲過程和函數, 觸發器,和事件)。複合語句可以包含多個由BEGIN和END關鍵字包圍的 語句。

Reference

+0

請讓我知道這是否適合你@Keroro Chan – 1000111

+0

第一個作品。但是,我什麼時候需要「BEGIN/END」? –

+0

通常'BEGIN''END'用於存儲的程序。如果您編寫複合語句,則必須使用'BEGIN' ....'END'。對於單個語句它是可選的。但是如果沒有'END',你就不能使用'BEGIN'。 @KeroroChan – 1000111

相關問題