【问题标题】:Grails Data Migration RollbackGrails 数据迁移回滚
【发布时间】:2013-06-13 00:37:45
【问题描述】:

您好,我正在尝试使用 Grails 域类做一些非常简单的事情。我正在向我的班级添加一个字段,并且我想使用数据迁移插件回滚一次,以便删除我添加的字段。

首先我创建了如下的初始更改日志:

grails dbm-generate-changelog changelog.groovy

然后我在 Config.groovy 文件中添加了以下内容:

grails.plugin.databasemigration.updateOnStart = true grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.groovy']

然后我在我的域类中添加了一个额外的字段并执行了以下操作:

grails dbm-gorm-diff 添加-new-field.groovy --add

我运行了应用程序(grails run-app),之后我执行了:

grails dbm-rollback-count 1

之后我再次运行应用程序:grails run-app 但该领域仍然存在。

我正在为数据库使用 MySQL。以下是我在 DataSource.groovy 中的配置方式:

dataSource {
    pooled = true
    driverClassName = "com.mysql.jdbc.Driver"
dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
        dbCreate = 'update'
            url = "jdbc:mysql://localhost/dashboard?useUnicode=yes&characterEncoding=UTF-8"
    username ="foo"
    password = "bar"
    }
}

..... and on.....

有人可以指导我如何执行回滚吗? 我在用: 圣杯 2.2.2 数据库迁移:1.3.2

【问题讨论】:

  • 我也尝试删除 dbCreate='update' ......没有运气
  • 我认为它不应该被删除,而是空白:dbCreate = ''
  • “之后我再次使用:grails run-app 运行该应用程序,但该字段仍然存在。”域类中的字段还是表中的列?
  • 我的意思是该字段不应再存在,因为我正在回滚到架构没有该字段的时候。

标签: grails grails-orm grails-plugin grails-2.0 grails-domain-class


【解决方案1】:

当执行 grails dbm-rollback-count 1 时,它只使用 groovy 更改日志文件对数据库进行更改,方法是获取日志中的最后一个更改集并撤消该更改。如果您再次运行您的应用程序,Groovy.config 中的以下行会将这些字段放回表中:

grails.plugin.databasemigration.updateOnStart = true grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.groovy']

我不太确定 dbm-rollback-count 服务器在我的情况下的用途,但它确实起到了作用。 我在想执行回滚不仅会删除数据库中的最后一个变更集(添加的字段),还会从域类中删除该字段变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2011-05-22
    • 1970-01-01
    • 2011-04-17
    • 2015-06-30
    • 2014-06-21
    • 2011-01-07
    相关资源
    最近更新 更多