Oto rozwiązanie, które znalazłem, które działa wystarczająco dobrze, chociaż nie jest idealne, ponieważ musisz zmienić swój skrypt SQL.
W swoim application.properties
plik zmień właściwość separatora DataSource:
spring.datasource.separator=^;
Następnie zaktualizuj swój schema.sql
plik wygląda następująco:
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 ^;
Polecenie DELIMITER działa tylko z klientem MySQL CLI i Workbench i nie będzie działać przy inicjalizacji bazy danych Spring Boot. Po usunięciu poleceń DELIMITER Spring Boot nadal zgłosi wyjątek, ponieważ nie zrozumie ;
znaki w procedurach składowanych nie są oddzielnymi instrukcjami, dlatego jako obejście należy zmienić właściwość separatora źródła danych.