2014-09-22 225 views
0

是我对数据源org.flywaydb.core.api.FlywayException:错误而确定的数据库产品名称下方

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiName" value="java:comp/env/jdbc/intdb" /> 
</bean> 

和迁徙路线豆配置JNDI查找是

<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate"> 
     <property name="dataSource" ref="datasource" /> 
    </bean> 

下面我列举越来越异常,但如果我替换JNDI查找与豆的所有属性,它工作正常,

引起:org.flywaydb.core.api.FlywayEx ception:错误而 在org.flywaydb.core.internal.dbsupport.DbSupportFactory.getDatabaseProductName(DbSupportFactory.java:139) 在org.flywaydb.core.internal.dbsupport.DbSupportFactory.createDbSupport(DbSupportFactory.java确定数据库产品名称 :59) at org.flywaydb.core.Flyway.execute(Flyway.java:1147) at org.flywaydb.core.Flyway.migrate(Flyway.java:811) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java: 597) at org.sp ringframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522) 在org.springframework.beans.factory。在oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) 不支持的功能 在:support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ...... 26多个 造成的:值java.sql.SQLException oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269) at oracle.jdbc.dbaccess.DBError.th rowUnsupportedFeatureSqlException(DBError.java:689) 在oracle.jdbc.OracleDatabaseMetaData.getDatabaseMajorVersion(OracleDatabaseMetaData.java:4442) 在org.flywaydb.core.internal.dbsupport.DbSupportFactory.getDatabaseProductName(DbSupportFactory.java:134)

回答

1

我有类似的,工作配置在我的项目。在Spring上下文XML我有:

<bean id="migrationDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="jdbc/myTestDb"/> 
</bean> 
<bean id="dbMigrationManager" class="test.version.DbMigrationManager" init-method="updateDatabaseSchema"> 
    <constructor-arg name="migrationDataSource" ref="migrationDataSource"/> 
</bean> 

我在DbMigrationManager构造函数的参数包装数据源。它看起来像这样:

package test.version;

import org.flywaydb.core.Flyway; 

import javax.sql.DataSource; 

public class DbMigrationManager { 

    private final DataSource dataSource; 

    public DbMigrationManager(DataSource migrationDataSource) { 
     this.dataSource = migrationDataSource; 
    } 

    public void updateDatabaseSchema() { 
     Flyway flyway = new Flyway(); 
     flyway.setDataSource(dataSource); 
     flyway.migrate(); 
    } 

} 

而且我在使用的gradle迁飞路线3.0版本是这样的:

compile group: 'org.flywaydb', name: 'flyway-core', version: '3.0' 

如果不那么也许有助于你的问题是特定的数据库。就像在这个线程:

Exception against Oracle DB: "Error while determining database product name: Unsupported feature"

,或者你使用迁飞的一些老,越野车版本。