sql >> Base de Datos >  >> RDS >> Mysql

Problema con la ejecución del procedimiento en el archivo spring boot schema.sql

Aquí está la solución que encontré que funciona lo suficientemente bien, aunque no es ideal ya que tiene que cambiar su secuencia de comandos SQL.

En su application.properties archivo cambie la propiedad del separador DataSource:

spring.datasource.separator=^;

Luego actualice su schema.sql archivo para tener el siguiente aspecto:

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

El comando DELIMITER solo funciona con el cliente MySQL CLI y Workbench y no funcionará para la inicialización de la base de datos Spring Boot. Una vez que haya eliminado los comandos DELIMITER, Spring Boot seguirá lanzando una excepción ya que no entenderá el ; los caracteres en los procedimientos almacenados no son declaraciones separadas, por lo que debe cambiar la propiedad del separador de fuente de datos como solución alternativa.