【发布时间】:2020-04-30 07:59:17
【问题描述】:
我有这个脚本用于每月更新表:
DELIMITER |
CREATE
EVENT `kpiparams_scheduled_update`
ON SCHEDULE
EVERY 1 MONTH
STARTS '2020-02-01 02:59:59'
ON COMPLETION PRESERVE
COMMENT 'KPIParams was updated by event_kpiparams_scheduled_update'
DO
BEGIN
UPDATE kpiparams INNER JOIN kpiparams_update
ON kpiparams.param_name = kpiparams_update.param_name
SET kpiparams.good = kpiparams_update.good,
kpiparams.bad = kpiparams_update.bad,
kpiparams.weight_gold = kpiparams_update.weight_gold,
kpiparams.weight_tech = kpiparams_update.weight_tech,
kpiparams.is_for_calc = kpiparams_update.is_for_calc
WHERE kpiparams.param_name = kpiparams_update.param_name;
END |
DELIMITER ;
此代码丢弃异常:
原因:java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在“DELIMITER | ”附近使用正确的语法。 CREATE EVENT kpiparams_scheduled_update ON SCHEDULE EVERY 1 MONTH ST' 在第 1 行
还有这个:
嵌套异常是 java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在“DELIMITER | ”附近使用正确的语法。 CREATE EVENT
kpiparams_scheduled_updateON SCHEDULE EVERY 1 MONTH ' 在第 1 行
我搜索了一些资源说,我需要使用 Delimeter,不要在 '' 中写月数并使用 BEGIN-END。顺便说一句,它对我没有帮助。
spring.datasource.schema=classpath*:mysql-scripts/event_update_kpiparams.sql
编辑脚本:
CREATE
EVENT kpiparams_scheduled_update
ON SCHEDULE EVERY 1 MONTH STARTS '2020-02-01 02:59:59'
ON COMPLETION PRESERVE
COMMENT 'KPIParams was updated by event_kpiparams_scheduled_update'
DO
BEGIN
UPDATE kpiparams INNER JOIN kpiparams_update
ON kpiparams.param_name = kpiparams_update.param_name
SET kpiparams.good = kpiparams_update.good,
kpiparams.bad = kpiparams_update.bad,
kpiparams.weight_gold = kpiparams_update.weight_gold,
kpiparams.weight_tech = kpiparams_update.weight_tech,
kpiparams.is_for_calc = kpiparams_update.is_for_calc
WHERE kpiparams.param_name = kpiparams_update.param_name;
END
【问题讨论】:
-
是井号(# 04:00:00 ...)被mysql识别为注释符号吗?
-
@Ronald,已删除,但没有帮助。
-
您尝试过什么调试?在某些东西起作用之前,不应该很容易地在这里和那里移除零件吗?
标签: mysql sql sql-scripts mysql-event