无法在mysql上创建事件调度程序

时间:2017-01-26 07:01:39

标签: mysql

您好我正在尝试创建一个事件调度程序,但我总是收到此错误而且我不知道为什么

  

您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在SQLEXCEPTION结束时使用DECLARE CONTINUE HANDLER结束       SET id = 0       虽然id​​'在第8行

下面是我的代码

DELIMITER |

CREATE EVENT `reset_kizuki` 
ON SCHEDULE EVERY 1 MONTH STARTS '2017-02-01 00:00:00' 
DO 
BEGIN


DECLARE id INTEGER
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END
SET id = 0

WHILE id < 12 DO
UPDATE kizuki 
SET methodID_1 = 0, method1_date = NULL, methodID_2 = 0, 
method2_date = NULL, is_PRM = 0 WHERE user_id = id
SET id = id + 1
END WHILE

END |

DELIMITER ;

我不知何故不能放任何&#39 ;;&#39;在我的代码中

谁能帮助我吗? 谢谢

2 个答案:

答案 0 :(得分:0)

您的代码语法对我来说正确(并不意味着它有效);在所有正确的地方

drop event if exists  `reset_kizuki`;

DELIMITER |

CREATE EVENT `reset_kizuki` 
ON SCHEDULE EVERY 1 MONTH STARTS '2017-02-01 00:00:00' 
DO 
BEGIN


DECLARE id INTEGER;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
SET id = 0;

WHILE id < 12 DO
UPDATE kizuki 
SET methodID_1 = 0, method1_date = NULL, methodID_2 = 0, 
method2_date = NULL, is_PRM = 0 WHERE user_id = id;
SET id = id + 1;
END WHILE;

END |

DELIMITER ;

答案 1 :(得分:0)

首先创建存储过程以使其更清晰:

CREATE EVENT `event_sample` 
ON SCHEDULE EVERY 1 SECOND STARTS '2016-04-21 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE DO 
call proc_event_sample()

然后

call proc_event_sample()

您可以通过以下方式明智地测试程序:

$("#preview-file").click(function () {
        $("#preview-pdf").html("");