Ecco la soluzione che ho trovato che funziona abbastanza bene, anche se non è l'ideale in quanto devi cambiare lo script SQL.
Nel tuo application.properties
file modifica la proprietà del separatore DataSource:
spring.datasource.separator=^;
Quindi aggiorna il tuo schema.sql
file per apparire come segue:
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 ^;
Il comando DELIMITER funziona solo con il client MySQL CLI e Workbench e non funzionerà per l'inizializzazione del database Spring Boot. Dopo aver rimosso i comandi DELIMITER, Spring Boot genererà comunque un'eccezione poiché non comprenderà il ;
i caratteri nelle stored procedure non sono istruzioni separate, quindi è necessario modificare la proprietà del separatore dell'origine dati come soluzione alternativa.