2014-09-19 61 views
3

當我嘗試在MSSQL和MySQL上運行時,我遇到Liquibase校驗和問題。Liquibase - 校驗和因不同的數據庫供應商而異

在我的MSSQL基地我有一個更新日誌條目與此校驗:

3:cf2f5de7a1dcc738bbc185e25fbcf6c9 

當我跑我對這個數據庫liquibase,它工作得很好。

然後,我複製的changelog進入到我的MySQL數據庫,並嘗試運行,並得到這個錯誤:

myLiquibase.xml::1::Tobb is now: 3:cedf7a8ba54ea3f83141f79 

我曾試圖以再生設置校驗null在我的MSSQL校驗和校驗恢復到

3:cf2f5de7a1dcc738bbc185e25fbcf6c9 

當在MySQL做同樣的,我得到這個校驗:

3:cedf7a8ba54ea3f83141f7987007deb7 

因此,根據我所看到的,取決於它是否在MSSQL或MySQL中運行,Liquibase會生成不同的校驗和。這怎麼會發生?我認爲校驗和只取決於liquibase腳本的實際內容?

回答

3

是的,這取決於內容和DB型,因爲實際上校驗不取決於你的changeset文字,但SQL這是當前數據庫產生的,這會爲不同DB略有不同。

如果要避免校驗和錯誤,可以在變更集中使用validCheckSum標記。

+0

我明白了,但'validCheckSum'會禁用所有校驗和校驗?它會在知道腳本已經在當前狀態下運行時刪除了一些安全性。 – Tobb 2014-09-19 08:03:46

0

校驗和實際上是基於變更集文本的標準化版本而不是SQL來計算的,並且應與數據庫類型無關。

您是否針對不同的數據庫在不同的操作系統版本上運行?

+0

MySQL在Windows7 64位本地運行。 MSSQL在Windows Server 2008 R2上運行。我們正在使用Liquibase 2.0.1版本。可能是由於覆蓋了數據類型? – Tobb 2014-09-24 07:47:29

+0

謝謝,Windows 7與2008r2不應該影響校驗和。你如何重寫數據類型?只需讓liquibase像平常一樣轉換它們,或者使用changelog參數? – 2014-09-24 14:51:53

+0

我們使用的是modifySql元素:' ' – Tobb 2014-09-24 15:13:58

相關問題