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

Flyway位置-指向单个sql脚本

步博艺
2023-03-14

我的文件夹里有这样的脚本:

D:/dev/DatabaseSetup/oracle/010__script.sql
D:/dev/DatabaseSetup/oracle/020__script.sql
D:/dev/DatabaseSetup/oracle/030__script.sql
D:/dev/DatabaseSetup/oracle/040__script.sql
D:/dev/DatabaseSetup/oracle/050__script.sql

我想将所有脚本保留在同一个文件夹中,但在迁移中忽略其中一些脚本。确切地说,我只想包括这个脚本

<locations>
    <location>filesystem:oracle/020__script.sql</location>
    <location>filesystem:oracle/030__script.sql</location>
    <location>filesystem:oracle/040__script.sql</location>
</locations>

pom.xml的路径是D:/dev/DatabaseSetup/oracle/pom.xml

我读了这个问题,但是发现我不能为迁移指定单个sql脚本(在接受的答案中,它使用指向java包的类路径)。

这是可能的吗?我得到了以下错误:

[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:3.2.1:migrate (default-cli) on proje
ct DatabaseSetup: org.flywaydb.core.api.FlywayException: Unable to scan for SQL migrations in lo
cation: filesystem:D:/dev/DatabaseSetup/oracle/020__script.sql: Invalid filesystem path:
D:/dev/DatabaseSetup/oracle/020__script.sql -> [Help 1]

当我更改

<locations>
    <location>filesystem:oracle</location>
</locations>

flyway执行所有脚本。


共有2个答案

沙宣
2023-03-14

我通过为那些我想执行的脚本定义文件名模式来解决我的问题,然后将它们复制到flyway将查找迁移的特定文件夹中。

例如,如果文件名模式为**__pattern**。sql,配置为:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <id>copy-flyway-scripts</id>
            <phase>compile</phase>
            <configuration>
                <target name="copy-flyway-scripts">
                    <echo>Copying SQL scripts</echo>
                    <copy todir="./target/flyway">
                        <fileset dir="./src/main/resources/oracle" >
                            <include name="**__pattern**.sql"/>
                        </fileset>
                    </copy>
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>  
    <version>3.0</version>  
    <configuration>
        <driver>${db-driver-name}</driver>
        <url>${db-url}</url>
        <user>${db-user-name}</user>
        <password>${db-user-password}</password>
        <locations>
            <location>filesystem:./target/flyway</location>
        </locations>
        <schemas>
            <schema>SCHEMA</schema>
        </schemas>
    </configuration>
</plugin>
郎宏浚
2023-03-14

不,这是不可能的。你可以做的是创建两个不同的文件夹,并在你执行da命令运行Flyway的那一刻,你传递一个参数说女巫文件夹Flyway应该读取。

 类似资料:
  • 尝试运行基于Java的(编译的)迁移文件,这些文件不在配置Flyway的项目中。谁能告诉我这样做是可能的吗? 我创建了一个使用飞行方式进行迁移的罐子。Jar 需要一个参数,即迁移脚本的位置。迁移脚本位于不同的位置/项目中。到目前为止,所有脚本都是基于 SQL 的。(即)。需要添加一个基于java的迁移脚本,做一些复杂的逻辑。 试图添加pom。xml到脚本位置,以及db/migration文件夹中的

  • 在该项目中,我们使用Flyway迁移工具来开发数据库模式以及这些脚本的git历史。 这个想法是每个脚本编号都以number为前缀,增加值10,然后是名称,例如: 0000_name_one。sql 0010_name_two。sql 0020_name_tree.sql 等 但是,由于我们必须开始处理多个分支(例如,两个主要分支是:主master_ext),再加上我们有一些用于耗时功能的开发分支

  • 我找不到夸克。飞道。在我的Quarkus应用程序中工作的占位符。我在申请表中定义了这一行。属性文件 在我的sql文件中,我有一行 我得到的错误是 以下是我尝试过的事情: 升级到Quarkus 1.13.6。期末考试 尝试设置 如集成测试所示:https://github.com/quarkusio/quarkus/tree/main/integration-tests/flyway 谢谢你马修

  • 我有一个Gradle脚本,它使用flyway插件来创建一些数据库表,现在我需要更新该脚本,以便它可以与两组单独的flyway脚本一起工作,每个脚本更新一个单独的数据库。 在单数据库版本的脚本中,我只是这样做: 我一直在尝试声明一个新任务来运行第二个数据库的脚本: 我的Gradle技能很差,但我知道这不是正确的方法——我的理解是块会覆盖原始flyway配置,所以如果我想在之后运行,它会继续使用第二组

  • 问题内容: 我在pl / sql中的指定位置将xmltype插入另一个xmltype时遇到问题。 第一个变量v_xml的格式为: 第二个v_xml2: 我的目的是得到这样的东西: 我应该如何处理我的代码? 有人能帮助我解决这个问题吗?据我所知,有诸如insertchildxml,appendchildxml之类的功能或类似的功能……我在纯SQL中找不到很少的解决方案,但是我不知道如何在PL / S