web-dev-qa-db-ja.com

FlywayException:次の場所でSQL移行をスキャンできません:classpath:db / migration

Maven統合でflywayの使用を開始しようとしていますが、機能させることができません。

私はドキュメンテーションに従っているので、奇妙なことは行われていないようです。

私のpom.xmlは次のとおりです:

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

resources/db/migration /というディレクトリはありますが、まだ移行はありません。

Cygwinまたはcmdでflyway:infoを発行すると、flywayエラーが発生しました。

$ 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] ------------------------------------------------------------------------

これについて教えてください。

たくさんありがとう。

15
Federico Piazza

まあ、あなただけが知っている。

私は問題を見つけました、それは私たちの環境でフライウェイをセットアップしたときに起こりますが、実行するマイグレーションがありません。

クラスパスエラーは表示されないはずですが、幸い、機能しています。

ちなみに、私が見つけた別の問題は、initを実行した後、infoでチェックすると何も表示されないことです。また、V1を使用して新しい移行を追加すると、infoV1_1に変更しない限り表示されません。

助けたい

10
Federico Piazza

これは、flyway:migrateを呼び出す前にコンパイル目標が実行されない場合にも発生します。実際、これはISクイックスタートマニュアルに含まれています。

mvn コンパイル flyway:migrate

ただし、その詳細を見逃してmvn flyway:migrateの呼び出しを開始すると、SQLファイルはターゲットディレクトリにコピーされず(実際にはターゲットディレクトリも存在しません)、この不可解なエラーが発生します。

15
yankee

私は同じ問題に出くわしました。私の場合、問題の原因となった間違ったディレクトリに移行スクリプトがありました。スクリプトV1__Create_person_table.sqlをresources/db/migration /の適切なディレクトリに移動しました。

4
Lakshmi

私は同じ問題に直面しました。しかし、ログを鋭く観察したところ、flywaydbがdb/migrationフォルダーでスクリプトを探していることがわかりましたが、私のスクリプトはdb/migrateにあります。そのため、db/migrateからdb/migrationへのパスを修正した後、動作します!!。

2
adithya

私にも同様の問題がありました。私の場合、すべてをトリプルチェックした後で、ディレクトリに正しく名前を付けたと思いました。 migrationsではなくmigrationと入力したことがわかりました。私がこれを修正するとすぐに、すべてがうまくいきました。

この直前に、移行ファイル名のバージョンマーカー(V1)の後のアンダースコアに別の問題がありました。それはdunder(ダブルアンダースコア)である必要があるので、常にV1__description.sql

私が遭遇するフライウェイの問題はどれも大きな混乱ではないようです。それは常に小さなもので、簡単に修正できます。それは問題が何であるかを見つけることです。それは難しい部分です。

0

同様の問題がありました。それは、移行ディレクトリを作成したときに、db.migrationという名前を直接付けたためです。

ディレクトリdbを作成し、その中にmigrationディレクトリを作成しました。

0
Thami Bouchnafa

ここに私がこの厄介なエラーを得た場所で私が作った愚かな間違いがあります:

pom.xmlでは、パッケージをjarではなくpomとして設定してください。次にmvn installとM2フォルダーにそのプロジェクトのjarがあることを確認してください。そうでない場合、移行ファイルがコピーされておらず、見つからなかったため、このエラーが発生します。

0
prograhammer