【问题标题】:Grails db migration not being applied未应用 Grails 数据库迁移
【发布时间】:2015-02-23 13:25:40
【问题描述】:

我正在使用 Grails 2.4.3 和 database-migration:1.4.0 插件。

我创建了一个名为 Mod 的简单域类。我可以使用dbm-generate-gorm-changelog changelog.groovy 创建基于 groovy 的变更日志。这会正确生成文件。然后我执行dbm-update 报告:

|Starting dbm-update for database sa @ jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000
|Finished dbm-update

但是,数据库中没有创建表,运行dvm-status返回:

|Starting dbm-status for database sa @ jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
1 change sets have not been applied to SA@jdbc:h2:mem:devDb
     changelog.groovy::1413897188349-1::clarkrichey (generated)
|Finished dbm-status 

我从DataSource.groovy的开发环境配置如下:

 development {
        dataSource {
//            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
        }
    }

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    问题集中在您使用的是 h2 的内存实例这一事实。因此,在应用程序启动之间没有保存任何内容。如果您想要一个持久数据库,请更改您的 url 以使用基于文件的实例。

    development {
      dataSource {
        dbCreate = "none" // one of 'create', 'create-drop', 'update', 'validate', ''
        url = "jdbc:h2:file:/path/to/save/to/devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
      }
    }
    

    【讨论】:

    • 好的。所以我尝试了这个 url:jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE,根据h2database.com/html/cheatSheet.html 应该在工作目录中创建 devDb。但是,dvm-update 命令只是在启动 dbm-update 时挂起
    • 好的。我不得不手动删除锁定文件,现在它可以工作了。谢谢!
    猜你喜欢
    • 2017-01-08
    • 2011-05-22
    • 1970-01-01
    • 2011-01-07
    • 2012-01-15
    • 2017-05-26
    • 2021-05-01
    • 2014-08-11
    相关资源
    最近更新 更多