Mysql
 sql >> Database >  >> RDS >> Mysql

Problema con l'esecuzione della procedura nel file schema.sql di avvio primaverile

Ecco la soluzione che ho trovato che funziona abbastanza bene, anche se non è l'ideale in quanto devi cambiare lo script SQL.

Nel tuo application.properties file modifica la proprietà del separatore DataSource:

spring.datasource.separator=^;

Quindi aggiorna il tuo schema.sql file per apparire come segue:

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 ^;

Il comando DELIMITER funziona solo con il client MySQL CLI e Workbench e non funzionerà per l'inizializzazione del database Spring Boot. Dopo aver rimosso i comandi DELIMITER, Spring Boot genererà comunque un'eccezione poiché non comprenderà il ; i caratteri nelle stored procedure non sono istruzioni separate, quindi è necessario modificare la proprietà del separatore dell'origine dati come soluzione alternativa.