簡體   English   中英

Liquibase將列類型從Date更改為DateTime而不刪除包含的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM