Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем с изпълнението на процедурата във файла schema.sql за пролетно зареждане

Ето решението, което открих, което работи достатъчно добре, макар че не е идеално, тъй като трябва да промените своя SQL скрипт.

Във вашия application.properties файл промяна на свойството разделител на DataSource:

spring.datasource.separator=^;

След това актуализирайте своя schema.sql файл да изглежда по следния начин:

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 работи само с MySQL CLI клиента и Workbench и няма да работи за инициализация на база данни Spring Boot. След като премахнете командите DELIMITER, Spring Boot пак ще изведе изключение, тъй като няма да разбере ; символите в съхранените процедури не са отделни изрази, така че трябва да промените свойството разделител на източника на данни като заобиколно решение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите дали MySQL връзка е SSL криптирана?

  2. Дезинфекция и валидиране на формуляр php

  3. PHP:ехо броя на дубликатите в таблица по най-често срещаните

  4. Попълване на база данни без командата load data

  5. MySQL избира SUM от резултати с LIMIT