[英]Liquibase change column type from Date to DateTime without deleting contained values
我正在使用Liquibase進行數據遷移。
我有一個名為Document的表已經包含值。
我的表文檔包含列(id,name,dueDate)。 dueDate列的類型為Date,我想將其類型從DATE更改為DATETIME。
我采用了以下策略
1-創建一個DATETIME類型的新列duedatenew
從列duedate到duedatenew的2-拷貝值
3-刪除列duedate
4-重命名列duedatenew to 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>
但是在第二步中變更集的執行總是失敗。 數據副本總是失敗。
我該怎么解決這個問題?
我正在觀看列文檔...似乎valueComputed
應該指向一個sql函數,所以select查詢將無效...
但是,根據這個 ,你最好的選擇是使用sql
標簽來執行更新,如你所願...示例:
<changeSet id="task-99" author="blaise">
<addColumn tableName="document">
<column name="duedatenew" type="DATETIME" />
</addColumn>
<sql>update document set duedatenew = duedate</sql>
<dropColumn tableName="document" columnName="duedate" />
<renameColumn tableName="document" oldColumnName="duedatenew"
newColumnName="duedate" />
</changeSet>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.