我正在尝试对以下 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>