Hier is de oplossing die ik heb gevonden en die goed genoeg werkt, hoewel het niet ideaal is omdat je je SQL-script moet wijzigen.
In uw application.properties
bestand de DataSource-scheidingseigenschap wijzigen:
spring.datasource.separator=^;
Update vervolgens uw schema.sql
bestand ziet er als volgt uit:
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 ^;
De opdracht DELIMITER werkt alleen met de MySQL CLI-client en Workbench en werkt niet voor initialisatie van Spring Boot-database. Nadat u de DELIMITER-opdrachten hebt verwijderd, genereert Spring Boot nog steeds een uitzondering omdat het de ;
niet begrijpt. tekens in de opgeslagen procedures zijn geen afzonderlijke instructies, dus u moet de eigenschap van het scheidingsteken voor de gegevensbron wijzigen als tijdelijke oplossing.