Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Problem mit der Ausführung der Prozedur in der Spring Boot-Datei schema.sql

Hier ist die Lösung, die ich gefunden habe und die gut genug funktioniert, obwohl sie nicht ideal ist, da Sie Ihr SQL-Skript ändern müssen.

In Ihrer application.properties Datei ändern Sie die DataSource-Trennzeicheneigenschaft:

spring.datasource.separator=^;

Aktualisieren Sie dann Ihre schema.sql Datei wie folgt aussehen:

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

Der DELIMITER-Befehl funktioniert nur mit dem MySQL-CLI-Client und Workbench und nicht für die Initialisierung der Spring Boot-Datenbank. Nachdem Sie die DELIMITER-Befehle entfernt haben, löst Spring Boot weiterhin eine Ausnahme aus, da es den ; nicht versteht Zeichen in den gespeicherten Prozeduren sind keine separaten Anweisungen, daher müssen Sie die Datenquellen-Trennzeicheneigenschaft als Problemumgehung ändern.