java - 在java中运行动态生成的flyway脚本

标签 java postgresql spring-boot flyway

我想运行一些 Flyway 脚本来设置我的数据库以进行集成测试。

我在 src/test/resources/db/migration 处有一个 Flyway 脚本 V1-XXX,加载应用程序上下文后,我正在同一位置复制另一个文件 V2-XXXX。然后我使用以下代码来迁移这两个脚本。仅迁移第一个脚本。有人可以告诉我如何成功迁移这两个脚本吗?

Flyway flyway = Flyway.configure()
                          .dataSource("jdbcUrl",
                                      "username",
                                      "password").load();
flyway.migrate();

我正在使用的flyway版本:

compile "org.flywaydb:flyway-core:5.2.4"

我添加了以下代码来获取待处理的迁移信息:

    flyway.setLocations("filesystem:src/test/resources/db/migration");
    MigrationInfoService migrationInfoService = flyway.info();
    MigrationInfo[] migrationInfos = migrationInfoService.pending();
    flyway.migrate();

我看到以下日志:

2019-07-22 16:07:27.046  INFO 46406 --- [           main] o.f.core.internal.command.DbValidate     : Successfully validated 2 migrations (execution time 00:00.022s)
2019-07-22 16:07:27.057  INFO 46406 --- [           main] o.f.c.i.s.JdbcTableSchemaHistory         : Creating Schema History table: "public"."flyway_schema_history"
2019-07-22 16:07:27.074  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "public": << Empty Schema >>
2019-07-22 16:07:27.075  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "public" to version 1.1 - create-pgcrypto
2019-07-22 16:07:27.089  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "public" to version 20190712113815 - creating-initial-tables
2019-07-22 16:07:27.138  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 2 migrations to schema "public" (execution time 00:00.082s)
2019-07-22 16:07:28.603  INFO 46406 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.

2019-07-22 16:07:28.625  INFO 46406 --- [           main] o.f.core.internal.command.DbValidate     : Successfully validated 1 migration (execution time 00:00.003s)
2019-07-22 16:07:28.632  INFO 46406 --- [           main] o.f.c.i.s.JdbcTableSchemaHistory         : Creating Schema History table: "public"."flyway_schema_history"
2019-07-22 16:07:28.643  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "public": << Empty Schema >>
2019-07-22 16:07:28.643  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "public" to version 1.1 - create-pgcrypto
2019-07-22 16:07:28.656  INFO 46406 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 1 migration to schema "public" (execution time 00:00.024s)

flyway 似乎正在检测 2 个脚本,但仅迁移 1 个脚本。

最佳答案

您可以使用Flyway的设置位置方法 这里:

flyway.setLocations("filesystem:src/test/resources/db/migration");

关于java - 在java中运行动态生成的flyway脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153667/

相关文章:

java - 处理大型 CSV 文件的最佳方法是什么?

java - 在 arraylist 中的单个索引处添加多个字符串值并写入文件

sql - Postgres 将数据按天分组

php - 如何在像 Quickbase 这样的更新时在 SQL 服务器(Mysql 或 PostgreSQL、EST)中运行公式?

Spring MVC : Can not deserialize instance of out of START_ARRAY token

java - 何时使用 Comparable 和 Comparator

java - 无法在 java 11 中独立构建 Selenium

c# - Npgsql/PostgreSQL : "function does not exist" error message when it does

java - org.hibernate.AnnotationException : @OneToOne or @ManyToOne

java - 如何将异常类型与其消息分开