Här är lösningen jag hittade som fungerar tillräckligt bra, även om den inte är idealisk eftersom du måste ändra ditt SQL-skript.
I din application.properties
fil ändra egenskapen DataSource separator:
spring.datasource.separator=^;
Uppdatera sedan ditt schema.sql
filen ska se ut så här:
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 ^;
Kommandot DELIMITER fungerar bara med MySQL CLI-klienten och Workbench och fungerar inte för Spring Boot-databasinitiering. När du har tagit bort DELIMITER-kommandona kommer Spring Boot fortfarande att skapa ett undantag eftersom den inte förstår ;
tecken i de lagrade procedurerna är inte separata satser, så du måste ändra datakällans separatoregenskap som en lösning.