针对Oracle数据库异常:“错误而确定数据库产品名称:不支持的功能”(Exception agai

2019-10-17 16:26发布

我试图用迁飞2.0.3针对以下Oracle数据库:

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

当试图通过Maven来使用迁飞(MVN迁徙路线:信息-e),我得到的错误如下:

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 +)的新版本,迁徙路线工作正常:)

纵观违规OracleDatabaseMetaData.getDatabaseMajorVersion()方法,我可以看到它抛出明确地抛出“不支持的功能”的SQLException。

我在想,如果有一个原因,飞路可能并不满足这种可能性?

难道是疏忽(我可以考虑提交一个补丁),抑或是迁飞只能支持Oracle驱动程序的某些版本(无论出于何种原因,不是批判)。

干杯家伙!

UPDATE:解决方法

由于我使用maven,我在飞路插件定义所定义的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>
文章来源: Exception against Oracle DB: “Error while determining database product name: Unsupported feature”