0

アプリケーションをセットアップしようとしています。これにより、データベースが任意の環境にデプロイされたときにデータベースが自動的にアップグレードされるため、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.

私はすでにデータベースに対してflywayclean-migrateを実行しているので、データベースはすでにセットアップされて準備ができており、SCHEMA_HISTORYテーブルが存在します。何かアイデアはありますか?

4

1 に答える 1

0

Flyway default checks that non empty schema has been properly initialized. This check ensures Flyway doesn't migrate or clean wrong db in case of configuration mistake. Migration failed and this exception was thrown because metadata table with defined name should exist and be non empty when schema of your db has some data. Probably the metadata table was modified manually.

于 2012-09-21T14:09:23.103 に答える