次のOracleデータベースに対してFlyway2.0.3を使用しようとしています。
- Oracleデータベース: Oracle Database 10gEnterpriseEditionリリース10.2.0.5.0
- Oracle JDBC Driver: v9.0.2.0.0
Flyway through maven(mvn flyway:info -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 +)を使用すると、flywayは正常に機能します:)
問題のあるOracleDatabaseMetaData.getDatabaseMajorVersion()メソッドを見ると、「サポートされていない機能」のSQLExceptionが明示的にスローされていることがわかります。
フライウェイがこの不測の事態に対応できない理由があるのだろうかと思いました。
それは見落としである可能性がありますか(パッチの提出を検討できます)、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>