很難在您的代碼分支中共享單個數據庫實例。如果您嘗試在多個開發人員之間共享數據庫,則會導致相同類型的問題。
Liquibase旨在將基於文件的變更集用作數據庫更改的主記錄。專用表DATABASECHANGELOG旨在跟蹤哪些變更集已應用於數據庫實例。分支之間的切換導致的混亂中很多無法預測的方式,例如:
- 缺少的變更
- 變更其內容發生了變化(信息,以校驗和錯誤)。
- ...
最好的建議是刷新或重新同步的數據庫,只要你分支之間切換:
liquibase dropAll
liquibase update
在你的情況下,第二操作爲liquibase的servlet 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>
你有一個數據庫和許多分支機構?或者它是一個臨時數據庫,每個測試運行都有新的數據庫? – yegor256 2012-04-20 15:50:54
我想你需要a)每個分支一個DB b)每個分支一個更新日誌。爲多個分支維護單個更新日誌竟然是錯誤傾向 – 2012-04-20 15:52:51
我有一個每個分支的更改日誌,並且只有一個數據庫實例,所以我不需要多個數據庫,因爲我是唯一的開發人員。 – user979051 2012-04-20 16:15:33