我有MYSQL事件的代码:
CREATE EVENT DeleteToken
ON SCHEDULE EVERY 1 MINUTE
DO
BEGIN
DELETE FROM
`password_recovery`
WHERE `date_expires` <
CURRENT_TIMESTAMP();
END
当我运行它时,我收到以下错误:
#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 '' at line 8
date_exires
为datetime
,格式为YYYY-MM-DD HH:MM:SS
CURRENT_TIMESTAMP()
有什么问题。
我也试过CURRENT_TIMESTAMP
,但它给了我同样的错误。
答案 0 :(得分:3)
我建议您使用此查询 -
CREATE EVENT DeleteToken
ON SCHEDULE EVERY 1 MINUTE
DO
DELETE FROM `password_recovery` WHERE `date_expires` < CURRENT_TIMESTAMP();
否则,当您使用BEGIN..END子句时,应使用DELIMITER命令 -
DELIMITER $$
CREATE EVENT DeleteToken
ON SCHEDULE EVERY 1 MINUTE
DO
BEGIN
DELETE
FROM `password_recovery`
WHERE `date_expires` < CURRENT_TIMESTAMP();
END$$
DELIMITER ;
答案 1 :(得分:1)
您需要在查询中设置分隔符:
DELIMITER |
CREATE EVENT
...
CURRENT_TIMESTAMP();
END|
DELIMITER ;
如果您使用phpMyAdmin,请设置分隔符字段,而不是手动设置分隔符。
答案 2 :(得分:0)
只需使用Now()
代替CURRENT_TIMESTAMP()
答案 3 :(得分:0)
代替
ON SCHEDULE EVERY 1 MINUTE
尝试
ON SCHEDULE 1 MINUTE
完整的时间表将是这样的:
CREATE EVENT DeleteToken
ON SCHEDULE 1 MINUTE
DO
BEGIN
DELETE FROM `password_recovery` WHERE `date_expires` < CURRENT_TIMESTAMP();
END
答案 4 :(得分:0)
尝试使用DELIMITER
DELIMITER $$
CREATE EVENT DeleteToken
ON SCHEDULE EVERY 1 MINUTE
DO
BEGIN
DELETE FROM
`password_recovery`
WHERE `date_expires` <
Now();
END$$
DELIMITER ;