-1
我正在使用Liquibase進行數據遷移。Liquibase從日期更改列日期類型而不刪除包含的值
我有一個名爲Document的表已經包含值。
我的表文檔包含列(id,名稱,dueDate)。 dueDate列的類型爲Date,我想將其類型從DATE更改爲DATETIME。
我已經採用以下策略
1-創建duedatenew類型DATETIME的新列從塔DUEDATE
2-複製值來duedatenew
3-刪除列DUEDATE
4-重新命名欄duedatenew到duedate
如下面的變更集
<changeSet id="task-99" author="blaise">
<addColumn tableName="document">
<column name="duedatenew" type="DATETIME" />
</addColumn>
<update tableName="document">
<column name="duedatenew" valueComputed="(SELECT duedate FROM document)" />
</update>
<dropColumn tableName="document" columnName="duedate" />
<renameColumn tableName="document" oldColumnName="duedatenew"
newColumnName="duedate" />
</changeSet>
但在第二步中執行changeset總是失敗。數據的副本總是失敗。
我該如何解決這個問題?
感謝Carlitos爲您的答案。你提出的解決方案是我首先採用的方法,它的工作原理。但我想要一個方法來使用liquibase標籤而不用寫sql。 事實上,我在一家公司工作,其原則之一是編寫不依賴任何DataBase的代碼,因爲我們使用ORM進行java對象映射。所以我們的代碼應該適用於任何SGBD,這就是爲什麼我們避免編寫特定的SQL代碼。所以我想在我的changeSet中只使用liquibase標籤來解決這個問題。 感謝您的回答。 請你知道一種避免這種sql的方法嗎? – blaiso
不是真的(我認爲你不能),@blaiso ...但是,如果你編寫SQL標準,我不明白你爲什麼不能使用SQL標記(使用SQL標準,你不違反你的公司原則)...你介意接受我的答案是否正確?謝謝! –
好的,非常感謝Carlitos的回答 – blaiso