5

dropwizard-migrations を使用して、liquibase を使用して postgresql データベースへの変更を追跡しようとしています。ゼロから再構築するのではなく、既存の本番データベースで移行を実行できるようにしたいと考えています。現在、ステージングでテストしています。前提条件付きの変更セットを作成しました。

<changeSet id="3" author="me">
    <preConditions onFail="CONTINUE">
        <not>
            <sequenceExists sequenceName="emails_id_seq"/>
        </not>
    </preConditions>
    <createSequence sequenceName="emails_id_seq" startValue="1" incrementBy="1" />
</changeSet>

私の目標は、シーケンスが既に存在する場合、変更セットの適用をスキップすることです。簡単に見えますが、機能していません。

ERROR [2013-09-13 22:19:22,564] liquibase: Change Set migrations.xml::3::me failed.  Error: Error executing SQL CREATE SEQUENCE emails_id_seq START WITH 1 INCREMENT BY 1: ERROR: relation "emails_id_seq" already exists
! liquibase.exception.DatabaseException: Error executing SQL CREATE SEQUENCE emails_id_seq START WITH 1 INCREMENT BY 1: ERROR: relation "emails_id_seq" already exists

CONTINUE の代わりに MARK_RAN も使用してみました。それは運が悪い。

4

4 に答える 4

1

ビューでやりたいことと同じことをしましたが、私にとってはうまくいきます:

多分あなたにいくつかのアイデアを与える:

<changeSet author="e-ballo" id="DropViewsAndcreateSynonyms" context="dev,int,uat,prod">
    <preConditions onFail="CONTINUE" >
        <viewExists viewName="PMV_PACKAGE_ITEMS" schemaName="ZON"/>
        <viewExists viewName="PMV_SUBSPLAN_INSTALLTYPES" schemaName="ZON"/>
    </preConditions>
    <dropView schemaName="ZON" viewName="PMV_PACKAGE_ITEMS"  />
    <dropView schemaName="ZON" viewName="PMV_SUBSPLAN_INSTALLTYPES"  />
    <sqlFile path="environment-synonyms.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/>
</changeSet>

役立つことを願っています

于 2013-09-18T14:31:02.167 に答える
0

次のように dropwizard-migrations "fast-forward" コマンドを実行して、これを解決しました。

java -jar hello-world.jar db fast-forward helloworld.yml

これにより、実際に適用することなく、次の変更セットが適用済みとしてマークされます。早送りしたい変更セットごとに、これを 1 回行う必要がある場合があります。すべてを早送りしたい場合は、 --all フラグもあります。

詳細については、http: //dropwizard.codahale.com/manual/migrations/を参照してください。

于 2014-02-23T20:26:09.133 に答える