2014-08-28 33 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') 
}