我正在使用Grails 2.4.3和数据库迁移:1.4.0插件。
我创建了一个名为Mod的简单Domain类。我可以使用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"
}
}
答案 0 :(得分: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"
}
}