在尝试执行编译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脚本,里面有一个模式和一个表。
请在这里指导我...任何帮助表示赞赏。
答案 0 :(得分:3)
这里有两个问题:
请修复第一个并为第二个提出问题: - )
此外,您应该为脚本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();
使用这种方法,迁移对我有用。希望这对某人有帮助。