Inilah solusi yang saya temukan yang bekerja cukup baik, meskipun tidak ideal karena Anda harus mengubah skrip SQL Anda.
Di application.properties
. Anda file ubah properti pemisah DataSource:
spring.datasource.separator=^;
Kemudian perbarui schema.sql
Anda file menjadi seperti berikut:
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 ^;
Perintah DELIMITER hanya berfungsi dengan klien MySQL CLI dan Workbench dan tidak akan berfungsi untuk inisialisasi database Spring Boot. Setelah Anda menghapus perintah DELIMITER, Spring Boot masih akan mengeluarkan pengecualian karena tidak akan memahami ;
karakter dalam prosedur tersimpan bukanlah pernyataan terpisah, jadi Anda harus mengubah properti pemisah sumber data sebagai solusinya.