2016-02-24 85 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

相关问题