2
为了更改我的表中的十进制字段,我需要知道如何让DB迁移代码进行此更改。Grails数据库迁移 - 如何更改十进制数据库字段的scale属性为3?
当前该字段表示为(19,2),并且需要在该点之后用3个浮点数来更改为(19,3)。
我的数据库是MySql。
谢谢!
为了更改我的表中的十进制字段,我需要知道如何让DB迁移代码进行此更改。Grails数据库迁移 - 如何更改十进制数据库字段的scale属性为3?
当前该字段表示为(19,2),并且需要在该点之后用3个浮点数来更改为(19,3)。
我的数据库是MySql。
谢谢!
在LIQUIBASE的文档中,有一个叫做modifyDataType的属性。
试试这个:
databaseChangeLog {
changeSet(author: 'author', id: '1234') {
modifyDataType(columnName: 'column', newDataType: 'DECIMAL(19,3)')
}
}
我觉得这工作得很好。
解决使用:addNotNullConstraint -
changeSet(author: 'roeyg (generated)', id: '1409232538826-2') {
addNotNullConstraint(columnDataType: 'DECIMAL(19,3)', columnName: 'value', tableName: 'period_value')
}
它工作正常! ,但它从可为空的'false'=>'true'。 我试图添加'可空:false',但它不能正常工作。抛出异常。 我该如何解决它? – roeygol 2014-08-28 14:47:30
在运行脚本之前,始终运行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
这种情况有一些简单的解决方案吗?一些魔术线? – roeygol 2014-08-28 15:03:30