1

我正在尝试使用 cedar 堆栈将新的 grails 2.0.3 应用程序部署到 heroku。我的应用程序正在使用数据库迁移插件来管理 postgres 模式。在开发中,我可以运行 grails dbm-update 来更新我的模式。在 heroku 中,似乎 grails 不可用。有什么建议么?

我目前的解决方法想法包括尝试从我的本地直接连接到 heroku postgres 并以这种方式运行迁移(不理想,并且不适用于共享数据库),或者可能分叉heroku grails buildpack(似乎过度)。

4

2 回答 2

2

我已经设法通过直接针对本地机器上的 prod 运行 dbm-update (可以是任何 grails 脚本)来让事情顺利进行。就是这样:

  1. 获取您的 heroku pg 实例的凭据。我认为只有使用专用数据库才能做到这一点,而不是共享类型。这可能会随着一些非常新的 heroku pg 开发而改变。

  2. 在带有产品详细信息的 datasource.groovy 中创建一个新的环境数据源。我的看起来像:

 prodadmin {
        dataSource {
            dbCreate = "none"
            driverClassName = "org.postgresql.Driver"
            dialect = org.hibernate.dialect.PostgreSQLDialect
            url = 'jdbc:postgresql://host:5432/dbname?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory'
            username = 'user'
            password = 'password'
        }
}

有了它,您可以继续使用以下命令在 heroku 中更新您的生产 grails 应用程序的架构:

 grails -Dgrails.env=prodadmin dbm-update

于 2012-05-23T21:51:09.707 回答
0

自动运行功能是为这种情况创建的。请参阅第 4 节中http://grails-plugins.github.com/grails-database-migration/docs/manual/上的“启动时自动运行”部分。

于 2012-05-24T00:34:30.550 回答