【问题标题】:How does flyway init its databaseflyway如何初始化它的数据库
【发布时间】:2015-06-13 17:02:45
【问题描述】:

我在 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 设置为“迁移”,我的第一个脚本(名称为 V001_init.sql)并且只是执行一个简单的创建表似乎没有被执行,因为我在 blankapp_schema_version 表中没有创建表,也没有添加我当前版本的行。

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

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>

【问题讨论】:

    标签: java spring postgresql tomcat flyway


    【解决方案1】:

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

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

    所以要运行 V001 脚本,initDescription 参数应该是 0

    【讨论】:

    • 谢谢,我必须更新我的 flyway 版本(我还在 1.5)
    猜你喜欢
    • 2021-06-15
    • 2014-04-23
    • 2019-01-30
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2020-01-12
    相关资源
    最近更新 更多