8 votes

Liquibase : exécution de multiples changelogs

J'utilise SpringLiquibase pour la configuration de liquibase, la configuration suivante fonctionne bien avec un seul fichier changelog (formaté en sql)

@Configuration
@Slf4j
public class LiquibaseConfiguration {

  @Inject
  private DataSource dataSource;

  @Bean
  public SpringLiquibase liquibase() {
    log.info("################## Entering into liquibase #################");
    SpringLiquibase liquibase = new SpringLiquibase();
    liquibase.setDataSource(dataSource);
    liquibase.setChangeLog("classpath:schema/update-schema-01.sql");
    // Configure rest of liquibase here...
    // ...
    return liquibase;
  }
}

Dans mon application, je peux avoir besoin d'exécuter more than one changelog et je n'ai pas pu faire une telle exécution,
J'ai essayé d'alimenter plusieurs changelogs comme suit,

liquibase.setChangeLog("classpath:schema/update-schema-01.sql") ;

liquibase.setChangeLog("classpath:schema/update-schema-02.sql") ;

le dernier fichier changelog seul est exécuté.

liquibase.setChangeLog("classpath:schema/*.sql") ;

J'obtiens l'erreur suivante liquibase.exception.ChangeLogParseException: java.io.IOException: Found 2 files that match classpath:schema/*.sql

Veuillez suggérer un moyen d'inclure tous les changelogs ici.

9voto

Golov Pavel Points 504

Une des solutions possibles : vous pouvez créer le changelog principal, qui va comprend d'autres changelogs autant que vous le souhaitez. Et dans le SpringLiquibase vous ne définirez qu'un seul changelog principal de liquibase.

Par exemple, supposons que vous ayez 2 fichiers changelog : one-changelog.xml y two-changelog.xml et vous devez exécuter les deux. Je vous suggère de créer un fichier supplémentaire main-changelog.xml et y inclure one-changelog.xml y two-changelog.xml des dossiers comme celui-ci :

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">

    <include file="one.xml"/>
    <include file="two.xml"/>
</databaseChangeLog>

Et mettre main-changelog.xml comme journal des modifications pour SpringLiquibase .

En conséquence, vous aurez deux fichiers changelog distincts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X