Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema com a execução do procedimento no arquivo schema.sql de inicialização de mola


Aqui está a solução que encontrei que funciona bem o suficiente, embora não seja ideal, pois você precisa alterar seu script SQL.

Em seu application.properties altere a propriedade do separador DataSource:
spring.datasource.separator=^;

Em seguida, atualize seu schema.sql arquivo para ficar da seguinte forma:
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 ^;

O comando DELIMITER funciona apenas com o cliente MySQL CLI e o Workbench e não funcionará para a inicialização do banco de dados Spring Boot. Depois de remover os comandos DELIMITER, o Spring Boot ainda lançará uma exceção, pois não entenderá o ; os caracteres nos procedimentos armazenados não são instruções separadas, portanto, você precisa alterar a propriedade do separador de fonte de dados como solução alternativa.