bla*_*iso 3 java datetime date database-migration liquibase
我正在使用 Liquibase 进行数据迁移。
我有一个名为 Document 的表,它已经包含值。
我的表文档包含列(id、name、dueDate)。DueDate 列的类型为 Date,我想将他的类型从 DATE 更改为 DATETIME。
我采用了以下策略
1- 创建一个 DATETIME 类型的新列 Duedatenew
2- 将duedate 列中的值复制到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>
Run Code Online (Sandbox Code Playgroud)
但是在第二步期间变更集的执行总是失败。数据复制总是失败。
请问我该如何解决?
我正在看列文档......似乎valueComputed应该指向一个sql函数,所以选择查询不起作用......
但是,根据this,您最好的选择是使用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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5492 次 |
| 最近记录: |