Ето решението, което открих, което работи достатъчно добре, макар че не е идеално, тъй като трябва да промените своя SQL скрипт.
Във вашия application.properties
файл промяна на свойството разделител на DataSource:
spring.datasource.separator=^;
След това актуализирайте своя schema.sql
файл да изглежда по следния начин:
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 ^;
Командата DELIMITER работи само с MySQL CLI клиента и Workbench и няма да работи за инициализация на база данни Spring Boot. След като премахнете командите DELIMITER, Spring Boot пак ще изведе изключение, тъй като няма да разбере ;
символите в съхранените процедури не са отделни изрази, така че трябва да промените свойството разделител на източника на данни като заобиколно решение.