【问题标题】:Error when running Flyway on JBoss 7在 JBoss 7 上运行 Flyway 时出错
【发布时间】:2012-07-11 23:50:10
【问题描述】:

我正在尝试设置我的应用程序,以便在部署到任何环境时自动升级数据库,因此我在 Spring 配置中添加了以下内容:

<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url"    value="jdbc:oracle:thin:@${db.host}:${db.port}:${db.database}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}" />
    <property name="maxActive" value="4" />
    <property name="maxWait" value="5000" />
    <property name="defaultAutoCommit" value="false" />
    <property name="defaultReadOnly" value="false" />
    <property name="validationQuery" value="select '1' from DUAL" />
</bean>
<!-- ADDED IN AN ATTEMPT TO FIX THE PROBLEM -->
<bean id="flyway-init" class="com.googlecode.flyway.core.Flyway" init-method="init">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate" depends-on="flyway-init">
    <property name="dataSource" ref="datasource"/>
</bean>

但是当我在 JBoss 7 中运行它时,出现以下错误:

com.googlecode.flyway.core.validation.ValidationException: Found non-empty schema 'WMYERS' without metadata table! Use init() first to initialize the metadata table.

我已经对数据库运行了一个 flyway clean-migrate,所以它已经设置好并准备好了,并且存在 SCHEMA_HISTORY 表,有什么想法吗?

【问题讨论】:

  • 原来以前的开发人员出于某种奇怪的原因为 init 表指定了一个不同的名称....一旦我删除了它,一切都很好!

标签: java jboss flyway


【解决方案1】:

Flyway 默认检查非空模式是否已正确初始化。此检查确保 Flyway 在配置错误的情况下不会迁移或清理错误的数据库。迁移失败并引发此异常,因为当您的数据库架构有一些数据时,具有定义名称的元数据表应该存在并且非空。可能元数据表是手动修改的。

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2012-03-28
    • 1970-01-01
    • 2014-03-05
    • 2018-12-05
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多