Я пытаюсь использовать Flyway 2.0.3 для следующей базы данных Oracle:
- База данных Oracle: Oracle Database 10g Enterprise Edition, выпуск 10.2.0.5.0
- Драйвер Oracle JDBC: v9.0.2.0.0
При попытке использовать Flyway через 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 может поддерживать только определенные версии драйвера оракула (по какой-то причине, не критикуя).
Здоровья ребята!!!
ОБНОВЛЕНИЕ: обходной путь
Поскольку я использую maven, я определил более новую версию драйвера оракула в определении плагина flyway. Проект по-прежнему может использовать старую зависимость драйвера, а плагин может использовать более новую версию:
<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>