【问题标题】:Why does changing mapping properties in domain doesn't generate new changelog lines?为什么更改域中的映射属性不会生成新的更改日志行?
【发布时间】:2015-11-25 07:21:20
【问题描述】:
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)。我很感激在这个困境中的任何帮助。谢谢!

【问题讨论】:

    标签: grails database-migration changelog


    【解决方案1】:

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

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

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

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

    【讨论】:

    • +1,并添加一些自动化测试。您确实有针对迁移后结构运行的域测试,以验证迁移是否正确,不是吗???
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2012-12-21
    • 2020-02-16
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多