2016-08-22 140 views
0

我有一個glassfish應用程序,它使用liquibase創建它的數據庫模式。我已將相同的應用程序遷移到Spring Boot。我沒有刪除數據庫模式。當我部署Spring應用程序和腳本liquibase跑,我執行變更用於創建一個表時,你得到Liquibase腳本失敗

java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

我需要指定liquibase腳本中沒有更改,並且成功獲取數據庫更新日誌鎖定。

不應該跳過所有的表格創建步驟嗎?我將相同的應用程序插入相同的數據庫。你以前遇到過這種情況嗎?

更新:這可能與更改日誌文件中存儲的MD5總數有關嗎?所以新應用程序計算出的md5與舊版本計算出的不匹配,腳本被觸發,導致明顯的異常?

非常感謝

回答

1

我不認爲你有一個校驗和差異 - 這將導致不同的錯誤信息。我認爲可能是DATABASECHANGELOG表的變更記錄路徑不同於Liquibase報告的變更記錄路徑。

變更集由3件事物識別 - 變更集ID,作者和路徑。當Liquibase決定是否應將更改日誌中的更改集部署到特定數據庫時,它會查看DATABASECHANGELOG表並檢索該信息,將其與更改日誌文件中的信息進行比較,並且不會嘗試部署任何與之匹配的內容。在這種情況下,我認爲它會檢測路徑上的差異並嘗試重新部署更改。

+0

謝謝@SteveDonie,那是我的問題。升級liquibase版本導致更新日誌路徑以稍微不同的方式構建。所以變更集將被應用。解決方案是在.xml文件中指定logFileName屬性。 – TheRock3t

+0

很高興能幫到你。如果您覺得這是一個正確的答案,請在這裏「接受答案」。 – SteveDonie