sql >> Databasteknik >  >> RDS >> Mysql

Problem med att köra proceduren i våren boot schema.sql-fil

Här är lösningen jag hittade som fungerar tillräckligt bra, även om den inte är idealisk eftersom du måste ändra ditt SQL-skript.

I din application.properties fil ändra egenskapen DataSource separator:

spring.datasource.separator=^;

Uppdatera sedan ditt schema.sql filen ska se ut så här:

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

Kommandot DELIMITER fungerar bara med MySQL CLI-klienten och Workbench och fungerar inte för Spring Boot-databasinitiering. När du har tagit bort DELIMITER-kommandona kommer Spring Boot fortfarande att skapa ett undantag eftersom den inte förstår ; tecken i de lagrade procedurerna är inte separata satser, så du måste ändra datakällans separatoregenskap som en lösning.



  1. Hur man får ut det bästa av PostgreSQL-loggar

  2. Grundläggande om tabelluttryck, del 3 – Härledda tabeller, optimeringsöverväganden

  3. Hur implementerar man en-till-en-, en-till-många- och många-till-många-relationer samtidigt som man designar tabeller?

  4. Infogar bara en rad om den inte redan finns där