J'ai configuré le pluggin maven pour la base de données comme spécifié dans configuration maven .
Maintenant créé un ensemble de modifications comme: -
<changeSet id="changeRollback" author="nvoxland">
<createTable tableName="changeRollback1">
<column name="id" type="int"/>
</createTable>
<rollback>
<dropTable tableName="changeRollback1"/>
</rollback>
</changeSet>
Création du SQL pour mettre à jour DB en utilisant la ligne de commande: - mvn liquibase: updateSQL
Mais je veux juste savoir comment restaurer en utilisant un paramètre "rollbackTag". Par exemple, si vous exécutez la commande " mvn liquibase: rollbackSQL ", quelle devrait être la valeur du paramètre "rollbackTag".
Et est-il possible de revenir en arrière en utilisant l'id de l'ensemble de modifications?
Les balises de restauration sont conçues pour vérifier la configuration de votre base de données.
Les commandes suivantes restaureront la configuration de la base de données par 3 ensembles de modifications et créeront une balise appelée "point de contrôle":
mvn liquibase:rollback -Dliquibase.rollbackCount=3
mvn liquibase:tag -Dliquibase.tag=checkpoint
Vous pouvez maintenant mettre à jour la base de données et, à tout moment, revenir à ce stade à l'aide de la balise de retour en arrière:
mvn liquibase:rollback -Dliquibase.rollbackTag=checkpoint
ou bien générer le rollback SQL:
mvn liquibase:rollbackSQL -Dliquibase.rollbackTag=checkpoint
Au début, j'ai eu du mal à comprendre comment configurer le plugin Liquavase Maven. Juste au cas où cela aiderait, voici l'exemple que j'ai utilisé.
La mise à jour de la base de données est configurée pour s'exécuter automatiquement, suivie du balisage de la base de données avec le numéro de révision Maven actuel.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myspotontheweb.db</groupId>
<artifactId>liquibase-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<!-- Liquibase settings -->
<liquibase.url>jdbc:h2:target/db1/liquibaseTest;AUTO_SERVER=TRUE</liquibase.url>
<liquibase.driver>org.h2.Driver</liquibase.driver>
<liquibase.username>user</liquibase.username>
<liquibase.password>pass</liquibase.password>
<liquibase.changeLogFile>com/myspotontheweb/db/changelog/db-changelog-master.xml</liquibase.changeLogFile>
<liquibase.promptOnNonLocalDatabase>false</liquibase.promptOnNonLocalDatabase>
</properties>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.162</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>dbupdate</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>2.0.2</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tag>${project.version}</tag>
</configuration>
<goals>
<goal>update</goal>
<goal>tag</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Liquibase est maintenant configuré dans le cadre du cycle de vie standard et peut donc être exécuté comme suit:
mvn clean compile
Personnellement, je préfère placer la balise dans les fichiers de modifications, donc si vous devez annuler ou supprimer tous les enregistrements dans DATABASECHANGELOG
, vous ne perdrez pas vos enregistrements de balisage.
<databaseChangeLog>
<changeSet id="001_create_tables" .../>
<changeSet id="002_alter_tables" .../>
<changeSet id="003_load_user_data" .../>
<!-- Also include the tagging itself as a changeSet... -->
<changeSet author="userId" id="tag_version_0_1_0">
<tagDatabase tag="version_0.1.0" />
</changeSet>
<!-- version 0.1.0 ends here -->
</databaseChangeLog>