2014-08-28 30 views

回答

3

在LIQUIBASE的文档中,有一个叫做modifyDataType的属性。

试试这个:

databaseChangeLog { 
    changeSet(author: 'author', id: '1234') { 
     modifyDataType(columnName: 'column', newDataType: 'DECIMAL(19,3)') 
    } 
} 

我觉得这工作得很好。

+0

它工作正常! ,但它从可为空的'false'=>'true'。 我试图添加'可空:false',但它不能正常工作。抛出异常。 我该如何解决它? – roeygol 2014-08-28 14:47:30

+0

在运行脚本之前,始终运行dbm-update-sql。它显示了脚本生成的sql。你的表有一个创建的默认值?试试addDefaultValue(http://www.liquibase.org/documentation/changes/add_default_value.html)来设置默认值。如果发生异常,或者在这种情况下创建了错误的默认值,则运行回滚脚本。请参阅右面板ROLLBACK SCRIPTS中的dbmigration文档或Groovy CHanges部分。 – 2014-08-28 15:02:17

+0

这种情况有一些简单的解决方案吗?一些魔术线? – roeygol 2014-08-28 15:03:30

1

解决使用:addNotNullConstraint -

changeSet(author: 'roeyg (generated)', id: '1409232538826-2') { 
    addNotNullConstraint(columnDataType: 'DECIMAL(19,3)', columnName: 'value', tableName: 'period_value') 
}