1

我正在尝试对以下 Oracle 数据库使用 Flyway 2.0.3:

  • Oracle 数据库: Oracle 数据库 10g 企业版 10.2.0.5.0 版
  • Oracle JDBC 驱动程序: v9.0.2.0.0

尝试通过 maven (mvn flyway:info -e) 使用 Flyway 时,出现以下错误:

Caused by: java.sql.SQLException: Unsupported feature
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
    at oracle.jdbc.dbaccess.DBError.throwUnsupportedFeatureSqlException(DBError.java:689)
    at oracle.jdbc.OracleDatabaseMetaData.getDatabaseMajorVersion(OracleDatabaseMetaData.java:4442)
    at com.googlecode.flyway.core.dbsupport.DbSupportFactory.getDatabaseProductName(DbSupportFactory.java:113)
    ... 27 more

虽然如果我再试一次,但使用较新版本的驱动程序(v9.2+),flyway 工作正常:)

查看有问题的 OracleDatabaseMetaData.getDatabaseMajorVersion() 方法,我可以看到它明确抛出了“不支持的功能”SQLException。

我想知道flyway是否有理由不能满足这种可能性?

可能是疏忽(我可以考虑提交补丁)还是 Flyway 只能支持某些版本的 oracle 驱动程序(无论出于何种原因,而不是批评)。

干杯伙计们!!!

更新:解决方法

当我使用 maven 时,我在 flyway 插件定义中定义了更新版本的 oracle 驱动程序。项目仍然可以使用旧的驱动依赖,插件可以使用更新的版本:

<dependencies>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>9.0.2.0.0</version>
    </dependency>
    ...
</dependencies>

<plugin>
    <groupId>com.googlecode.flyway</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>2.0.3</version>
    <dependencies>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>10.2.0.4.0</version>
        </dependency>
                ...
    </dependencies>
        ...
</plugin>
4

0 回答 0