我想更好地瞭解Liquibase如何執行更改集。更好地理解Liquibase如何執行更改集
1)
一個)例如我有一個更改日誌與4分變更集和我執行updateDatabase(http://www.liquibase.org/documentation/ant/updatedatabase_ant_task.html)。 Liquibase將執行4個更改集。
b)如果我再次運行相同的更改日誌Liquibase不執行任何設置。
c)如果我將添加一個新的更改集到更改日誌中並運行更改日誌,Liquibase將僅執行新的更改集。
問題:
Liquibase如何知道什麼樣的變化將要執行?
Liquibase如何知道已執行的更改集?
2)變更集ID的重要性如何?我可以在更改日誌執行後更改它嗎?
3)變更集作者是如何重要的?我可以在更改日誌執行後更改它嗎?
4)如果我將執行回滾數據庫(http://www.liquibase.org/documentation/ant/rollbackdatabase_ant_task.html),會發生什麼? Liquibase如何知道更改設置爲回滾?
a)如果我將在a)之後執行回滾會發生什麼情況。 Liquibase會調用位於每個更改集(4個回滾元素)中的回滾元素嗎? b)如果我在1 b)後執行回滾會發生什麼情況。 Liquibase如何知道不會調用任何回滾元素?
c)如果我將在1 c)後執行回滾會發生什麼情況。 Liquibase會調用只有新變更集的回滾元素嗎?
謝謝! Liquibase創建的第二張表是什麼? 另外,你能回答這個問題嗎? http://stackoverflow.com/questions/21847482/does-liquibase-support-dry-run – Michael
第二個是DATABASECHANGELOGLOCK表,它只是用來確保對DATABASECHANGELOG的操作已成功完成。基本上,每次應用liquibase獲取鎖的更改,進行更改,然後釋放鎖。 – SteveDonie
DATABASECHANGELOGLOCK用於確保在多臺機器共享相同數據庫的分佈式環境中,只有一臺機器試圖同時更新數據庫。 –