我试图用迁飞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>