flyway:无法创建架构``:数据库名称不正确''

时间:2014-04-09 12:53:27

标签: flyway

在尝试执行编译flyway时:迁移目标我面临以下异常

com.googlecode.flyway.core.api.FlywayException:无法创建架构``:错误的数据库名称''

这就是我的pom.xml的样子

<plugin>
            <groupId>com.googlecode.flyway</groupId>
            <artifactId>flyway-maven-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <url>jdbc:mysql://localhost:3306</url>
                <user>root</user>
                <password>mysql</password>
                <driver>com.mysql.jdbc.Driver</driver>
                <!-- <schemas>
                    <schema>flywaymetadata</schema>
                    <schema>test</schema>
                </schemas> -->
            </configuration>
        </plugin>

我在resources / db / migration中有一个test.sql,它是一个备份sql脚本,里面有一个模式和一个表。

请在这里指导我...任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

这里有两个问题:

  • 您缺少数据库名称作为jdbc网址的一部分(例如:jdbc:mysql:// localhost:3306 / mydb)
  • Flyway可以更好地检测到这一点并为您提供更有意义的错误消息

请修复第一个并为第二个提出问题: - )

此外,您应该为脚本V1__test.sql命名并将其放在src/main/resources/db/migration下。

然后,您可以使用mvn compile flyway:migrate

迁移数据库

请记住,您必须首先使用您选择的工具创建数据库。您可以使用以下SQL语句执行此操作:CREATE DATABASE test;。 Flyway仅处理模式创建,而不处理数据库创建。

答案 1 :(得分:0)

我也正在使用MySQL数据库(5.7.x),并且正在通过Java运行迁移。我必须以编程方式指定架构和其他配置,才能获得正确迁移空数据库的途径。对我而言,在pom.xml的配置部分中设置模式不起作用,因为我试图直接在应用程序中(通过JUnit)运行迁移。

免责声明:绝对有一种更干净的方法来设置这些配置并运行迁移,这绝不是 the 甚至是 right 方式...骇人听闻...但它确实有效...请谨慎使用:

// The Flyway instance holds one of these bad boys under the hood...
FluentConfiguration conf = new FluentConfiguration();

// where my migrations are located within my Project
// <projectroot>/<module>/src/main/resources/db/migrations
conf.locations("classpath:db/migrations");

// my schemas, first one being the one used as the default schema
conf.schemas("defaultSchema", "schema2", "schema3", ...);

// exclude the default schema from the URL
conf.dataSource("jdbc:mysql://localhost:3306", "root", "uncrackable");

conf = Flyway.configure().configuration(conf);
flyway = conf.load();

// 3 days lateh...
flyway.migrate();

使用这种方法,迁移对我有用。希望这对某人有帮助。