提问人:Juan Enrique Riquelme 提问时间:8/3/2017 最后编辑:Super Kai - Kazuya ItoJuan Enrique Riquelme 更新时间:11/16/2023 访问量:838
在MySQL中创建事件得到语法错误
Creating an event got syntax error in MySQL
问:
我正在尝试创建此事件,但找不到语法错误。
CREATE
EVENT respaldoRegRawInformeAperturaLocal
ON SCHEDULE EVERY 1 DAY STARTS '2017-08-03 22:00:00'
DO BEGIN
-- INSERT INTO BACKUP TABLE
INSERT INTO regRawInformeAperturaLocalBACKUP (regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId)
-- GET DATA
SELECT regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId
FROM regRawInformeAperturaLocal
WHERE regRawInformeAperturaLocal.date < DATE_SUB(NOW(), INTERVAL 5 MONTH);
-- DELETE DATA FROM ORIGINAL TABLE
DELETE FROM regRawInformeAperturaLocal WHERE regRawInformeAperturaLocal.date < DATE_SUB(NOW(), INTERVAL 5 MONTH);
END;
[代码编辑 1]
CREATE
EVENT respaldoRegRawInformeAperturaLocal
ON SCHEDULE EVERY 1 DAY STARTS '2017-08-03 22:00:00'
DO BEGIN
-- INSERT INTO BACKUP TABLE
INSERT INTO regRawInformeAperturaLocalBACKUP (regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId)
-- GET DATA
SELECT regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId
FROM regRawInformeAperturaLocal
WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH);
-- DELETE DATA FROM ORIGINAL TABLE
DELETE FROM regRawInformeAperturaLocal WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH);
END;
[编辑] 这是语法错误消息:
[Err] 1064 - SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 11 行的“”附近使用的正确语法
答:
2赞
Juan Enrique Riquelme
8/3/2017
#1
我可以让它工作:
我必须添加分隔符并将语法从 END; 更改为 END|
无论如何,这是代码:
DELIMITER |
CREATE
EVENT IF NOT EXISTS respaldoRegRawInformeAperturaLocal
ON SCHEDULE EVERY 1 DAY STARTS '2017-08-03 22:00:00'
DO BEGIN
-- INSERT INTO BACKUP TABLE
INSERT INTO regRawInformeAperturaLocalBACKUP (regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId)
-- GET DATA
SELECT regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId
FROM regRawInformeAperturaLocal
WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH);
-- DELETE DATA FROM ORIGINAL TABLE
DELETE FROM regRawInformeAperturaLocal WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH);
END|
DELIMITER ;
现在我必须测试它,但我可以创建它,所以我想这很好。
[编辑] 该活动就像一个魅力。
评论
1赞
spencer.sm
3/11/2021
使用分隔符解决了我在 Amazon RDS 上使用 MySQL v5.7 的问题
0赞
Super Kai - Kazuya Ito
11/16/2023
#2
我在下面遇到了同样的错误:
错误 1064 (42000):SQL 语法中有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 4 行的 '' 附近使用的正确语法
当我没有在事件中设置 DO 语句时,如下所示:plus_one
CREATE EVENT plus_one
ON SCHEDULE EVERY 1 SECOND
STARTS '2023-11-15 00:00:00';
或者,当我没有在事件中的语句中设置任何 SQL 语句时,如下所示:DO
plus_one
CREATE EVENT plus_one
ON SCHEDULE EVERY 1 SECOND
STARTS '2023-11-15 00:00:00'
DO; -- Here
因此,我使用如下所示的 SQL 语句设置语句,然后解决了错误:DO
CREATE EVENT plus_one
ON SCHEDULE EVERY 1 SECOND
STARTS '2023-11-15 00:00:00'
DO UPDATE test SET num = num + 1; -- Here
评论
regRawInformeAperturaLocal.date
date
DELIMITER