【发布时间】:2016-05-10 10:08:11
【问题描述】:
我正在尝试解决 Grails 2.5.x 应用程序中的一个非常具体的要求:我想在应用程序启动之前通过应用一系列数据库转换脚本来升级数据库架构(取决于数据库版本/应用程序)版本)。我们过去在“传统”Java Servlet 应用程序中这样做,但我在使用 Grails 时遇到了一些困难。
问题:在 Grails 中是否有一个事件,我可以在应用程序启动期间以某种方式挂钩,这将允许我使用 Groovy 和现有的 DataSource 配置,但会在 GORM/Hibernate 之前发生启动了吗?
我已经检查过的一些选项:
- BootStrap 的 init 闭包在这里不起作用,因为如果数据库架构已过期,应用程序根本不会以“验证”模式启动。
- 有我以前没有使用过的 Events.groovy,但似乎这些事件针对的是 grails 编译/构建生命周期,而不是打包在 WAR 文件中并部署到应用容器的自包含应用程序。
- grails database-migration 插件似乎很相似,并且希望 Grails 命令行在目标服务器上可用,
并且转换由管理员手动执行。 事实证明我很可能在这里错了。
【问题讨论】:
-
实际上,您可以在应用启动时自动运行数据库迁移,而不是纯手动。我建议你再看看这个插件,因为它正是你要找的。span>
-
谢谢你 Joshua - 我会去看看!在快速阅读插件描述后,我可能得到了错误的想法。
-
grails.plugin.databasemigration.updateOnStartFileNames = ['your-db-specific-changelog-filename.groovy']
标签: grails