コードのブランチ間で単一のデータベースインスタンスを共有することは困難です。複数の開発者間でデータベースを共有しようとすると、同じ種類の問題が発生します。
Liquibaseは、データベース変更のマスターレコードとしてファイルベースのチェンジセットを使用するように設計されています。特別なテーブルDATABASECHANGELOGは、どのチェンジセットがデータベースインスタンスに適用されたかを追跡するように設計されています。ブランチを切り替えると、予測できない多くの方法で混乱が生じます。たとえば、次のようになります。
- チェンジセットがありません
- コンテンツが変更されたチェンジセット(チェックサムエラーにつながる)。
- ..。
ブランチを切り替えるたびに、データベースを更新または再同期することをお勧めします。
liquibase dropAll
liquibase update
あなたの場合、liquibaseサーブレットは起動時にデータベースを更新するため、2番目の操作はおそらく不要です。
データの損失が心配な場合は、コンテキストを使用してテストデータを制御します。
アップデート
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>