【问题标题】:How do I modify a column using Grails' database migration plugin's Groovy DSL?如何使用 Grails 的数据库迁移插件的 Groovy DSL 修改列?
【发布时间】:2011-09-07 06:30:39
【问题描述】:

您能给我一个使用modifyDataType 方法的常规变更集的示例吗?

我试过了:

databaseChangeLog = {
  changeSet(author: "user", id: "5-1") {
        modifyDataType(tableName: "test", columnName: "description4", newDataType: "int(11)")
    }
}

modifyDataType 无法识别。我也试过modifyColumn,但我得到了相同的结果。

根本问题是:dsl支持什么样的标签,它们是如何使用的?

【问题讨论】:

  • 由于该插件仍在开发中(当前版本为 0.2.1),文档可能不像插件达到 v1.0 时那样完整。我原以为它会支持任何liquibase refactoring,但鉴于您的经验,显然不是?您可以随时尝试opening a JIRA issue 看看是否可以将其添加到文档中。
  • 此外,FWIW 更改域属性的名称并运行 dbm-gorm-diff file.groovy 会使用 dropColumnaddColumn 创建变更集,而不是使用修改。也许列重命名/修改在路线图上。您可能可以编写自己的自定义变更集以在短期内迁移数据。
  • 虽然插件仅在 v0.2.1 版本,但它非常稳定,实际上是 1.0 版本的候选版本。在官方 1.0 之前,我想解决几个未解决的问题,当然它需要更多文档,但除此之外它基本上是功能完整的。
  • @Burt - 同意它是稳定的(我并不是真的打算暗示它不是)。我已经使用它一段时间了,并且对它非常满意。感谢您的开发。

标签: grails groovy grails-plugin database-migration


【解决方案1】:

它将像这样工作:

databaseChangeLog = {

  changeSet(author: "test (generated)", id: "1422541392309-2") {
    comment { 'Rename tabTitle to tabName' }
    renameColumn(tableName: "user", oldColumnName: "tab_title", newColumnName: "tab_name", columnDataType: "varchar(255)")
  }
}

【讨论】:

    【解决方案2】:

    所有的 Liquibase 重构都应该有效 - Groovy DSL 反映了 Liquibase XML。我没有对 modifyDataType 进行测试,但将其添加到我的测试脚本中并且效果很好 - 请参阅 https://github.com/grails-plugins/grails-database-migration/blob/master/testapp/price.changelog.groovy

    如果您可以显示一些有关它如何失败的信息,那么找出问题所在会很有用。

    【讨论】:

    • Master 现在是 Grails 3 插件,显然测试应用程序已移动(我没有处理 Grails 3 更新)。但老插件在“1.x”分支,引用文件为here
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 2011-01-07
    • 2012-05-20
    • 2017-05-26
    • 2015-03-14
    • 2019-08-31
    • 2016-08-03
    相关资源
    最近更新 更多