当版本为 0 时,Flyway 迁移不起作用

Flyway migrations don't work when the version is 0

当我有一个版本号为 0 的文件时,Flyway 不会提取它。

Maven 依赖:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>3.2.1</version>
</dependency>

Spring 配置:

<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource" />
    <property name="baselineOnMigrate" value="true" />
    <property name="locations" value="classpath:/META-INF/db/" />
    <property name="placeholders">
        <map>
            <entry key="username" value="" />
        </map>
    </property>
</bean>

类路径中的文件:/META-INF/db/

当我启动我的服务时,出现此错误

java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

这是插入 schema_version table:

COLUMN          |ROW1               |ROW2
version_rank    |1                  |2
installed_rank  |1                  |2
version         |1                  |1.3
description     |Flyway Baseline    |from-0.12
type            |BASELINE           |SQL
script          |Flyway Baseline    |sql/V1_3__from-0.1.sql
checksum        |-993203535         |
installed_by    |DBUSER2            |DBUSER2
installed_on    |25-AUG-15          |25-AUG-15
execution_time  |0                  |120
success         1                   |0

它似乎忽略了实际创建 table 并立即移动到 sql/V0_1__INITIAL_BUILD.sql 文件]sql/V1_3__from-0.1.sql 失败。

命令行工具好像没有这个问题。

是否无法使用 Spring 使用 0 作为版本号,还是我遗漏了一些明显的东西?

默认情况下是正确的 1 是 baselineversion,它从中开始按顺序执行所有脚本。并且为了将默认版本从 1 覆盖到 0,请在 XML 处的 flyway 配置中使用以下内容:-

<property name="baselineVersion" value="0" />

谢谢。