2016-05-20 4 views
0

GIT、Bamboo、Ansible、Liquibaseを使用して自動配信プロセスを編成しています。Liquibase - ファイルのバージョンが異なる

Liquibaseロールバック機能を使用する際に問題が発生しています。基本的に私は同じファイル、私の変更セットマスターとバージョンファイル(それぞれ独自のロールバックセクションを持っている)を持っていて、2つの異なる場所に "アップグレード"フォルダと "ロールバック"フォルダを持っています。ファイルは同じですが、ロールバックは単純に機能しません。説明:

+ deployment_folder 
    + update 
     - changeset-master.xml 
     - changeset-1.0.0.xml 
     - changeset-1.0.1.xml 
    + rollback 
     - changeset-master.xml 
     - changeset-1.0.0.xml 
     - changeset-1.0.1.xml 

ファイルの内容はまったく同じです。 LiquiBaseをアップデートとタグ付けを実行

は大丈夫です:

$>liquibase --username=USR --password=*** --classpath=./ojdbc7.jar --driver=oracle.jdbc.driver.OracleDriver --url=jdbc:oracle:thin:@host:port:SID --changeLogFile=update/changeset-master.xml update 
$>liquibase --username=USR --password=*** --classpath=./ojdbc7.jar --driver=oracle.jdbc.driver.OracleDriver --url=jdbc:oracle:thin:@host:port:SID --changeLogFile=update/changeset-master.xml tag 1.0.0 
$>liquibase --username=USR --password=*** --classpath=./ojdbc7.jar --driver=oracle.jdbc.driver.OracleDriver --url=jdbc:oracle:thin:@host:port:SID --changeLogFile=update/changeset-master.xml update 
$>liquibase --username=USR --password=*** --classpath=./ojdbc7.jar --driver=oracle.jdbc.driver.OracleDriver --url=jdbc:oracle:thin:@host:port:SID --changeLogFile=update/changeset-master.xml tag 1.0.1 

ロールバックフォルダに変更し、マスターを使用して1.0.1から1.0.0にロールバックしようとしたときしかし、それは「LiquiBaseをロールバックが成功した」と言います変更はロールバックされません。 rollbackSQLコマンドには、DATABASECHANGELOGLOCK更新以外の関連するSQL文も表示されません。

$>liquibase --username=USR --password=*** --classpath=./ojdbc7.jar --driver=oracle.jdbc.driver.OracleDriver --url=jdbc:oracle:thin:@host:port:SID --changeLogFile=rollback/changeset-master.xml rollback 1.0.0 

されるファイルは、私は常に私のソース管理システムからのバージョンをプルする必要があり、私の場合、でshowブロッカーである、(チェックサムのために、私は仮定)とまったく同じである必要がありますように見えるので、ファイル彼らは同じ内容を持っているが、決して "同じ"ではない。 Liquibaseでこの検証を無効にする方法はありますか?現在、私はLiquibase 3.4.2を使用しています。

+0

同じファイルを使ってロールバックを実行した場合は、忘れてしまいます。 –

+0

Checkout ['logicalFilePath'](http://www.liquibase.org/documentation/databasechangelog.html)。私の知る限り、チェックサムにはフルパスのファイル名が含まれています。したがって、別のフォルダに同じファイルがあっても、別のフォルダとみなされます。 'logicalFilePath'を使うとこれを避けるべきです。 – Jens

+0

ジェンスズ、あなたはそれを持っています。それはまさにそれです。どうもありがとうございました! –

答えて

0

LiquiBaseをロールバックはこのように動作しません、あなたはあなたのスクリプトの<ロールバック>セクションにロールバック命令を指定し、ロールバックコマンドでそれを実行する必要があります。http://www.liquibase.org/documentation/rollback.html

UPD:LiquiBaseをは、チェンジセット、ファイル名に基づいてIDを使用しています変更IDと作成者IDを変更して変更を識別します。ファイルf1.xmlから<change id="1" author="dbf">...</change>を適用した場合、その仮想IDは<f1.xml, 1, dbf>です。ロールバックのために同じ内容のf2.xmlを実行すると、計算されるIDは<f2.xml, 1, dbf>なので、最初のIDと一致せず、何もロールバックされません。

+0

私は自分自身を明確にしていないのですが、バージョン管理されたファイル内のすべてのチェンジセットには独自のロールバックセクションがあります。 –

+0

@RicardoDuval、私は私の答えを更新しました。 – dbf

関連する問題