当前位置: 首页 > 知识库问答 >
问题:

用于控制多个DBs的dbms更改的Flyway位置

况嘉运
2023-03-14

My flyway config-使用mvn包运行flyway

<plugin>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-maven-plugin</artifactId>
            <version>4.2.0</version>
            <configuration>
                <locations>
                    <location>db.migration.h2</location>
                </locations>
            </configuration>
        </plugin>

我有一个maven应用程序,可以很好地用于一个DB(使用h2数据库引擎),我需要支持flyway到其他DB系统(db2、oracle ee、postgres)。在另一个项目中,我们正在flyway版本3.2.1上执行类似的flyway配置文件,以管理h2和timesten之间的表cration。

(新发现)当我在hte pom文件中使用flyway位置或配置文件条目时。“mvn clean package”使用起来很好。然而,“mvn verify”给我的错误是它有多个V##文件。

我在以下目录结构中有H2 flyway文件

atdd/src/main/java/db/migration/V1_2__comment.java
atdd/src/main/resources/db/migration/V1_1__create_tables.sql

我在迁移下创建了一个子目录“h2”,并将flyway文件移动到该子目录中。

我在“db/migration/db2”和“db/migration/oracle\u ee”中复制了这些文件的db和oracle ee版本

运行maven包只会让我:

Caused by: org.flywaydb.core.api.FlywayException: Found more than one migration with version 1.1
Offenders:
->/Users/XXXXX/Documents/fun/atdd/target/classes/db/migration/h2/V1_1__create_tables.sql (SQL)
->/Users/xxxxxx/Documents/fun/atdd/target/classes/db/migration/db2/V1_1__create_tables.sql (SQL)

我尝试过使用属性文件,但也不起作用

   <plugin>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-maven-plugin</artifactId>
            <version>4.2.0</version>

            <configuration>
                   <configFile>./flyway.properties</configFile>
            </configuration>
        </plugin>

atdd/飞行道。属性具有

 flyway.locations=db.migration.h2

似乎是什么运行回归测试的问题(surefire插件-我对maven相当陌生)surefire插件有什么特别的地方吗?

共有3个答案

茅秦斩
2023-03-14

Flyway递归搜索整个类路径,寻找要应用的迁移。“递归”一词意味着检查嵌套在其他文件夹中的文件夹。

因此,您的所有SQL文件都被找到了。Flyway无法知道应该使用或忽略哪些嵌套文件夹。

正如另一个答案所建议的,如果您希望忽略某些誓言,则必须明确指定所需的文件夹。

商瀚
2023-03-14

我能够通过将配置参数添加到故障保护插件来工作

 <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19.1</version><!--$NO-MVN-MAN-VER$ -->
            <configuration><argLine>-Dflyway.locations=db.migrtion.h2</argLine></configuration>
            <executions>

具有

mvn clean package  verify site -Dflyway.locations=db.migration.h2 

奇怪的是,如果我没有“-Dflyway.locations=db.migration.h2”,则无法正常工作

司徒泰
2023-03-14

有一个解决方法,您可以尝试使用Flyway.setLocations("一些/路径/test.sql")从程序中显式设置位置

 类似资料:
  • 主要内容:并发控制的问题在并发控制中,可以同时执行多个事务。 它可能会影响事务结果。保持这些事务的执行顺序非常重要。 并发控制的问题 并发事务以不受控制的方式执行时可能会出现几个问题。 以下是并发控制中的三个问题。 更新丢失 脏读 不可重复读取 1. 更新丢失 当访问相同数据库项的两个事务包含其操作时,某些数据库项的值不正确,则会发生丢失的更新问题。 如果两个事务T1和T2读取记录然后更新它,那么第二个更新将覆盖更新第一

  • 本文向大家介绍如何更改控制台的WindowLeft,包括了如何更改控制台的WindowLeft的使用技巧和注意事项,需要的朋友参考一下 使用Console.WindowLeft属性更改C#中控制台的WindowLeft。 示例 现在让我们看一个例子- 输出结果 这将产生以下输出-

  • 本文向大家介绍使用DBMS中的锁进行并发控制,包括了使用DBMS中的锁进行并发控制的使用技巧和注意事项,需要的朋友参考一下 锁是维护DBMS中并发控制不可或缺的一部分。任何实现基于锁的并发控制的系统中的事务,在获得所需的锁之前都无法读取或写入语句。 基于锁的协议中有两种类型的锁。这些是: 二进制锁- 只能处于以下两种状态之一:锁定或解锁。 共享/独占锁- 仅执行读取操作时,将获取共享锁。共享锁可以

  • 问题描述 我有一个基于spring boot的应用程序,可以在第三方环境中创建实体<应用程序部署在prod上。我发现了一个bug,修复该bug需要对第三方prod实体上已经创建的实体进行更改<预期解决方案第三方产品环境实体正在修复运行基于java的脚本 我希望该脚本仅在第一次部署具有修复程序的应用程序版本时在prod中运行<我正在寻找Flyway为数据库实体提供的相同功能。我可以使用Flayway

  • 有没有办法通过改变一节课的时钟来改变所有课的时间? 假设我有一个测试类a和一个测试类B。我想更改测试类(a)中的时钟,这样它会自动将B的时钟设置为相同的时间。 我在这两门课上都尝试过对时钟进行编码,但对于我正在编写的测试用例来说,这并没有真正起作用。我应该上静态时钟课吗?

  • 问题内容: 是否知道如何使DatePicker显示在关联的文本框的末尾而不是直接在其下方?趋向于发生的情况是,文本框位于页面底部,而DatePicker向上移动以解决该问题,并完全覆盖了文本框。如果用户想输入日期而不是选择日期,则不能。我宁愿它出现在文本框之后,所以它如何垂直调整都无关紧要。 知道如何控制定位吗?我没有看到小部件的任何设置,也没有运气来调整CSS设置,但是我很容易会丢失一些东西。