web-dev-qa-db-fra.com

FlywayException: impossible d'analyser les migrations SQL à l'emplacement: classpath: db/migration

J'essaie de commencer à utiliser les voies de migration avec l'intégration Maven mais je ne peux pas le faire fonctionner.

Je suis la documentation qui semble être très simple, donc aucune chose étrange ne semble être faite.

Mon pom.xml est le suivant:

<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/test</url>
                    <user>test_fede</user>
                    <password>test_fede</password>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-Java</artifactId>
                        <version>5.1.21</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

  <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>13.0.1</version>
        </dependency>

        <!-- DB dependencies -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-Java</artifactId>
            <version>5.1.21</version>
        </dependency>

        <!-- Test dependencies -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>compile</scope>
        </dependency>
  </dependencies>
</project>

J'ai le répertoire resources/db/migration/sans migration pour le moment.

Lors de la publication de la voie de migration: informations sur cygwin ou cmd, une erreur s'est produite sur la voie de migration:

$ mvn compile flyway:info
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.test:test:jar:0.0.1-SNAPSHOT
[INFO]    task-segment: [compile, flyway:info]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [flyway:info {execution: default-cli}]
[INFO] Database: jdbc:mysql://localhost:3306/test (MySQL 5.5)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] org.flywaydb.core.api.FlywayException: Unable to scan for SQL migrations in location: classpath:db/migration

Embedded error: Unable to determine URL for classpath location: db/migration (ClassLoader: org.codehaus.classworlds.RealmClassLoader@5bcdbf6)
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Tue May 06 11:06:15 CST 2014
[INFO] Final Memory: 17M/223M
[INFO] ------------------------------------------------------------------------

Pouvez-vous me donner un coup de main?

Merci beaucoup.

14
Federico Piazza

Eh bien, juste pour que vous sachiez.

J'ai trouvé le problème, cela se produit lorsque nous configurons la voie de migration dans notre environnement, mais nous n'avons aucune migration à exécuter.

Il ne devrait pas afficher d'erreur de chemin de classe, mais heureusement, il fonctionne.

En passant, un autre problème que j’ai constaté est qu’après l’exécution de init si nous vérifions avec info rien n’est affiché. Et si nous ajoutons une nouvelle migration avec V1 alors info ne l'affichera que si nous la changeons en V1_1

J'espère aider

10
Federico Piazza

Cela se produit également si l'objectif de compilation n'est pas exécuté avant d'appeler flyway: migrate. En fait, ceci IS est inclus dans le manuel de démarrage rapide. Ça dit:

mvn compile flyway: migrer

Toutefois, si vous manquez ce détail et commencez simplement à appeler mvn flyway:migrate, le fichier SQL ne sera pas copié dans le répertoire cible (en fait, le répertoire cible n'existera même pas) et vous obtiendrez cette erreur cryptique.

15
yankee

J'ai rencontré le même problème. Dans mon cas, mon script de migration se trouvait dans le mauvais répertoire qui était à l'origine du problème. J'ai déplacé le script V1__Create_person_table.sql dans le répertoire approprié à resources/db/migration/et cela a fonctionné!

4
Lakshmi

J'ai fait face au même problème. Mais quand j’ai observé les journaux avec attention, j’ai trouvé que flywaydb cherchait le script dans le dossier db/migration mais mon script est dans la base de données/migrate. donc, après avoir corrigé le chemin de db/migrate à db/migration, cela fonctionne !!.

2
adithya

Voici une erreur stupide que j'ai faite où j'ai eu cette erreur embêtante:

Assurez-vous de définir votre emballage comme suit: jar et non pom dans votre pom.xml . Ensuite, mvn install et assurez-vous que vous avez un fichier jar pour ce projet dans votre dossier M2, sinon vous obtiendrez cette erreur car le fichier de migration n'a pas été copié ni trouvé.

0
prograhammer