これが私が見つけた解決策であり、SQLスクリプトを変更する必要があるため理想的ではありませんが、十分に機能します。
application.properties
で ファイルは、データソースセパレータプロパティを変更します:
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でのみ機能し、SpringBootデータベースの初期化では機能しません。 DELIMITERコマンドを削除した後も、SpringBootは;
を理解しないため、例外をスローします。 ストアドプロシージャの文字は個別のステートメントではないため、回避策としてデータソースの区切り文字のプロパティを変更する必要があります。