I have this script for update table monthly:
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 ;
This code drop exception:
Caused by: java.sql.SQLSyntaxErrorException: 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 'DELIMITER | CREATE EVENT kpiparams_scheduled_update ON SCHEDULE EVERY 1 MONTH ST' at line 1
And this:
nested exception is java.sql.SQLSyntaxErrorException: 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 'DELIMITER | CREATE EVENT
kpiparams_scheduled_update
ON SCHEDULE EVERY 1 MONTH ' at line 1
I serched some resources that said, I need use Delimeter, don't write amount of months in '' and use BEGIN-END. By the way, it didn't help me.
spring.datasource.schema=classpath*:mysql-scripts/event_update_kpiparams.sql
EDITED SCRIPT:
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