Comment utiliser la voie de migration de la configuration de gérer plusieurs bases de données
nous avons une application java configuré avec maven qui utilise plusieurs bases de données. C'est un app - de nombreux schémas.
J'ai configuré de la voie de migration, testé et il fonctionne bien, mais ma config est seulement pour une base de données.
Voici mon pom.xml testé avec un schéma:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<!-- Flyway plugin configuration -->
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>3.0</version>
<configuration>
<url>jdbc:mysql://localhost:3306/argentina</url>
<user>test</user>
<password>test</password>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<!-- alllll my dependency list -->
</dependency>
<!-- DB dependencies -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
</dependencies>
</project>
Mise à jour: en utilisant la réponse maintenant j'ai le texte suivant pom.xml configuré avec 2 schémas.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>3.0</version>
<executions>
<execution>
<id>argentina</id>
<phase>compile</phase> <!--whatever phase you need-->
<goals>
<goal>migrate</goal>
</goals>
<configuration>
<url>jdbc:mysql://localhost:3306/argentina</url>
<user>test</user>
<password>test</password>
<locations>
<location>
filesystem:src/main/resources/db/migration
</location>
</locations>
</configuration>
</execution>
<execution>
<id>brazil</id>
<phase>compile</phase> <!--whatever phase you need-->
<goals>
<goal>migrate</goal>
</goals>
<configuration>
<url>jdbc:mysql://localhost:3306/brazil</url>
<user>test</user>
<password>test</password>
<locations>
<location>
filesystem:src/main/resources/test2/sql
</location>
</locations>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
...
</dependencies>
</project>
- Je exécuter des voies de migration des opérations, mais aucune n'a fonctionné, voici l'erreur que j'ai:
[INFO] Copying 5 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [flyway:migrate {execution: argentina}]
[INFO] Database: jdbc:mysql://localhost:3306/argentina (MySQL 5.5)
[INFO] Validated 4 migrations (execution time 00:00.006s)
[INFO] Current version of schema `argentina`: 45678
[INFO] Schema `argentina` is up to date. No migration necessary.
[INFO] [flyway:migrate {execution: brazil}]
[INFO] Database: jdbc:mysql://localhost:3306/brazil (MySQL 5.5)
[INFO] Validated 1 migration (execution time 00:00.003s)
[INFO] Current version of schema `brazil`: 1
[INFO] Schema `brazil` is up to date. No migration necessary.
[INFO] [flyway:migrate {execution: default-cli}]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] org.flywaydb.core.api.FlywayException: DataSource not set! Check your configuration!
La base de données de configuration est ok. Aussi, j'ai vérifié les schémas sont ok Ce que je suis absent?
Mise à JOUR: j'ai retiré de la ligne de commande de la voie de migration: et il a bien fonctionné. Grâce Jk1
OriginalL'auteur Federico Piazza | 2014-05-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier plusieurs exécutions pour un seul plugin avec différentes configurations:
Vous pouvez utiliser l'emplacement de la propriété à définir des migrations vous souhaitez exécuter pour chaque schéma, tout comme c'est fait dans l'exemple ci-dessus. Le type d'emplacement est déterminé par son préfixe. Unprefixed des emplacements ou des lieux de départ avec classpath: point à un package sur le chemin de la classe et peut contenir à la fois des sql et java basée sur les migrations. Les emplacements de départ avec le système de fichiers: pointer vers un répertoire sur le système de fichiers et ne peut contenir sql migrations.
Comment gérons-nous les migrations pour cela? Je veux dire, comment puis-je définir des migrations à courir sur son schéma spécifique?
J'ai essayé de vous conf mais je n'ai pas travaillé. J'ai eu ce maven erreur: [INFO] 'exécuter' a été spécifié dans l'exécution des ordres, mais ne figurant pas dans le plugin
Mon mauvais, accidentellement inclus balise supplémentaire dans la section configuration. Veuillez vérifier les mises à jour de réponse. Cette version fonctionne bien sur ma machine et répond à votre première question concernant les migrations spécifiques pour le schéma.
Pour exécuter des buts contre la personne exécutions que vous feriez quelque chose comme "mvn flyway:info@first-execution"
OriginalL'auteur Jk1