Hier ist die Lösung, die ich gefunden habe und die gut genug funktioniert, obwohl sie nicht ideal ist, da Sie Ihr SQL-Skript ändern müssen.
In Ihrer application.properties
Datei ändern Sie die DataSource-Trennzeicheneigenschaft:
spring.datasource.separator=^;
Aktualisieren Sie dann Ihre schema.sql
Datei wie folgt aussehen:
CREATE PROCEDURE Alter_Table()
BEGIN
IF NOT EXISTS( SELECT NULL
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'test_table'
AND table_schema = 'test'
AND column_name = 'cc_test_id') THEN
alter table test_table add cc_test_id VARCHAR(128) NOT NULL;
END IF;
END ^;
call Alter_Table ^;
Der DELIMITER-Befehl funktioniert nur mit dem MySQL-CLI-Client und Workbench und nicht für die Initialisierung der Spring Boot-Datenbank. Nachdem Sie die DELIMITER-Befehle entfernt haben, löst Spring Boot weiterhin eine Ausnahme aus, da es den ;
nicht versteht Zeichen in den gespeicherten Prozeduren sind keine separaten Anweisungen, daher müssen Sie die Datenquellen-Trennzeicheneigenschaft als Problemumgehung ändern.