Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème d'exécution de la procédure dans le fichier spring boot schema.sql

Voici la solution que j'ai trouvée qui fonctionne assez bien, bien qu'elle ne soit pas idéale car vous devez modifier votre script SQL.

Dans votre application.properties fichier modifier la propriété de séparateur DataSource :

spring.datasource.separator=^;

Mettez ensuite à jour votre schema.sql fichier ressemble à ceci :

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

La commande DELIMITER ne fonctionne qu'avec le client MySQL CLI et Workbench et ne fonctionnera pas pour l'initialisation de la base de données Spring Boot. Une fois que vous avez supprimé les commandes DELIMITER, Spring Boot lèvera toujours une exception car il ne comprendra pas le ; les caractères dans les procédures stockées ne sont pas des instructions séparées, vous devez donc modifier la propriété de séparateur de source de données comme solution de contournement.