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

Problem med at udføre procedure i spring boot schema.sql-fil

Her er den løsning, jeg fandt, som fungerer godt nok, selvom den ikke er ideel, da du skal ændre dit SQL-script.

I din application.properties fil ændre egenskaben DataSource separator:

spring.datasource.separator=^;

Opdater derefter din schema.sql fil til at se ud som følger:

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-kommandoen virker kun med MySQL CLI-klienten og Workbench og vil ikke fungere til Spring Boot-databaseinitialisering. Når du har fjernet DELIMITER kommandoerne, vil Spring Boot stadig give en undtagelse, da den ikke forstår ; tegn i de lagrede procedurer er ikke separate sætninger, så du skal ændre datakildeseparatoregenskaben som en løsning.



  1. Sammenfletning af datafiler med Statistica, del 2

  2. Sæt NOW() som standardværdi for datetime datatype?

  3. Hvornår skal jeg lukke DatabaseHelper?

  4. Sådan finder du duplikerede poster i PostgreSQL