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