Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z wykonywaniem procedury w pliku spring boot schema.sql

Oto rozwiązanie, które znalazłem, które działa wystarczająco dobrze, chociaż nie jest idealne, ponieważ musisz zmienić swój skrypt SQL.

W swoim application.properties plik zmień właściwość separatora DataSource:

spring.datasource.separator=^;

Następnie zaktualizuj swój schema.sql plik wygląda następująco:

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

Polecenie DELIMITER działa tylko z klientem MySQL CLI i Workbench i nie będzie działać przy inicjalizacji bazy danych Spring Boot. Po usunięciu poleceń DELIMITER Spring Boot nadal zgłosi wyjątek, ponieważ nie zrozumie ; znaki w procedurach składowanych nie są oddzielnymi instrukcjami, dlatego jako obejście należy zmienić właściwość separatora źródła danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz dane między 2 datami a średnią godzinową wydajnością

  2. MySQL UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE -> Błąd 1050

  3. Znaczniki czasu Laravel pokazujące milisekundy

  4. SQL — Wybierz wiersze z dwóch różnych tabel

  5. mysql - AKTUALIZACJA wiersza na podstawie innych wierszy