flyway如何初始化其数据库

时间:2015-04-08 16:03:42

标签: java spring postgresql tomcat flyway

我无法使用spring java web-app配置带有postgresql数据源的flyway。

即使我这样配置,Flyway似乎也没有执行迁移操作:

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource"/>
    <property name="table" value="blankapp_schema_version" />
    <property name="disableInitCheck" value="true" />   
</bean>

当我在eclipse中运行我的tomcat(v6)服务器时,它不会创建blankapp_schema_version表。我不得不将init-method更改为“init”以使他创建表。

现在创建了blankapp_schema_version表,但是即使我再次将init-method设置为“migrate”,我的第一个脚本(名称为V001_init.sql)只是做一个简单的创建表似乎没有被激活,因为我没有在blankapp_schema_version表中创建任何表,也没有使用当前版本的附加行。

此外,我的tomcat日志中没有错误我已经将com.google.flyway的logback设置为跟踪并且我唯一的行是:

17:25:48.822 [main] DEBUG c.g.f.c.dbsupport.DbSupportFactory - Database: PostgreSQL
17:25:48.823 [main] DEBUG com.googlecode.flyway.core.Flyway - Schema: public

,仅此而已。

某些背景信息:

我的bean“dataSource”绑定如下:

<jee:jndi-lookup jndi-name="jdbc/BlankAppDataSource" id="dataSource" /> 

在我的META-INF / context.xml中,我有:

<Context>
     <Resource name="jdbc/BlankAppDataSource"
            auth="Container"
            type="javax.sql.DataSource"
            username="postgres"
            password="Weblogic1"
            schema="public"
            driverClassName="org.postgresql.Driver"
            url="jdbc:postgresql://localhost:5432/rvandecaveye" 
    />
</Context>

1 个答案:

答案 0 :(得分:2)

如果您的迁移版本小于或等于blankapp_schema_version表中的架构版本,则它将不会运行迁移。

您可以通过添加属性initDescription来设置初始架构版本的值。

因此,要运行V001脚本,initDescription参数应为0