sql >> Database >  >> RDS >> Mysql

Probleem met het uitvoeren van de procedure in het spring bootschema.sql-bestand

Hier is de oplossing die ik heb gevonden en die goed genoeg werkt, hoewel het niet ideaal is omdat je je SQL-script moet wijzigen.

In uw application.properties bestand de DataSource-scheidingseigenschap wijzigen:

spring.datasource.separator=^;

Update vervolgens uw schema.sql bestand ziet er als volgt uit:

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

De opdracht DELIMITER werkt alleen met de MySQL CLI-client en Workbench en werkt niet voor initialisatie van Spring Boot-database. Nadat u de DELIMITER-opdrachten hebt verwijderd, genereert Spring Boot nog steeds een uitzondering omdat het de ; niet begrijpt. tekens in de opgeslagen procedures zijn geen afzonderlijke instructies, dus u moet de eigenschap van het scheidingsteken voor de gegevensbron wijzigen als tijdelijke oplossing.



  1. Hoe mysql workbench te verbinden met mysql in docker?

  2. COUNT(*) retourneert meerdere rijen in plaats van slechts één

  3. Hoeveel tabellen kunnen er in een mysql-database worden gemaakt?

  4. Hoe MySQLdb op Mountain Lion te installeren