コードの分岐間で単一のデータベースインスタンスを共有することは困難です。複数の開発者間でデータベースを共有しようとすると、同じ種類の問題が発生します。
Liquibaseはファイルベースのチェンジセットをデータベース変更のマスターレコードとして使用するように設計されています。特殊テーブルDATABASECHANGELOGは、データベースインスタンスにチェンジセットが適用されたトラックを設計したものです。枝の切り替えは、例えば、予測不可能な方法の多くの混乱が発生します。
- 欠落チェンジ、その内容が変更された(チェックサムエラーにつながる)
- チェンジ。
- ...
最高のアドバイスはあなたが枝を切り替えるたびに、データベースを更新または再同期することです:
liquibase dropAll
liquibase update
あなたのケースでは第2の動作は、LiquiBaseをサーブレットとしてprobabily不要であるだろう起動時にデータベースを更新します。
データの消失に関する懸念がある場合は、contextsを使用してテストデータを制御してください。
更新
あなたはMavenを使用している場合は、次のようにこの「再同期」操作はMavenのから呼び出すことができます。
mvn -Presync compile
次のように、このプロファイルは、あなたのPOMの中に設定されています。
<profile>
<id>resync</id>
<build>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.plugin.version}</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<url>${liquibase.url}</url>
<driver>${liquibase.driver}</driver>
<username>${liquibase.username}</username>
<password>${liquibase.password}</password>
<changeLogFile>${liquibase.changeLogFile}</changeLogFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<goals>
<goal>dropAll</goal>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
を
1つのデータベースと複数のブランチがありますか?または、それは一時的なデータベースであり、すべてのテスト実行のために新しくなっていますか? – yegor256
あなたはa)各ブランチに1つのDBが必要だと思います。b)各ブランチに1つの変更履歴があります。 –
私は唯一の開発者であるため、各ブランチのチェンジログとすべてのデータベースインスタンスが1つで、複数のデータベースは必要ありません。 – user979051