为什么更改域中的映射属性不会生成新的更改日志行?

时间:2015-08-31 09:37:33

标签: grails database-migration changelog

class Donation {

    BigDecimal amount

    static constraints = {
        amount min: BigDecimal.ZERO
    }

    static mapping = {
    }

}

添加后,域名如下所示:

class Donation {

    BigDecimal amount       

    static constraints = {
        amount min: BigDecimal.ZERO
    }

    static mapping = {
        amount scale: 4
    }

}

进行更改后,我在grails控制台中运行了dbm-gorm-diff,但它没有打印任何其他更改日志行。我想知道映射更改是否会产生新的更改日志行。但是看看"数量"的数据类型在mysql数据库中,它显示了十进制(19,2)。我认为制作比例4会将数据类型更改为十进制(19,4)。我很欣赏这种困境中的任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

虽然db-migration可以检测域中的更改,但可以生成所需的更改日志以更新数据库架构。始终找到正确的更改并不够智能。特别是在重命名表/列或更改列的数据类型时。在这种情况下,您需要进行manula迁移。

使用db-migration制作手动更改日志以更新架构:

databaseChangeLog = {

    changeSet(author: "sandeep (manual)", id: "20150901124635-01") {
        modifyDataType(columnName: "amount", newDataType: "decimal(19,4)", tableName: "donation")
    }
}

总是在生成更改日志后,验证它是否包含正确的更改。