【问题标题】:Heroku cannot replace DATABASE_URL in configuration (db=${DATABASE_URL})Heroku 无法替换配置中的 DATABASE_URL (db=${DATABASE_URL})
【发布时间】:2014-03-23 20:14:14
【问题描述】:

我有一个 heroku play 1.2.7 应用程序,在我第一次部署它时,它与提供的 postgres 数据库结合使用效果很好。我没有更改数据库 url 的值,但是,因为我推送了其他提交,并且在部署期间,heroku 告诉我:

WARNING: Cannot replace DATABASE_URL in configuration (db=${DATABASE_URL})

但是,命令 heroku config 说:

=== task-reminder Config Vars DATABASE_URL: postgres://zbvzcfzez...amazonaws.com:5432/d4cqrc8kc4tisk HEROKU_POSTGRESQL_GREEN_URL: postgres://zbvzcfzez...amazonaws.com:5432/d4cqrc8kc4tisk

当我尝试在生产中访问我的应用程序时,如果我做一些访问数据库的操作,那么我会遇到错误...

除此之外,对于如何部署我的应用程序,我会听取任何建议,而无需推送到 git。

【问题讨论】:

  • 我已经编辑了消息,它是一个 play 1.2.7 应用程序

标签: database heroku deployment playframework playframework-1.x


【解决方案1】:

您的错误是由于您的表尚未在生产环境中创建。如果您查看 heroku 日志,您会看到如下内容:

错误:关系 xxxxx 不存在

在生产模式下,Play 不会自动为您创建表格。相反,它使用您的数据库演化文件(在 db/evolutions 文件夹中)。

所以它们是解决这个问题的两种方法:

首先,您可以在 application.conf 文件中启用生产模式下的自动架构更新。

%prod.jpa.ddl = update
%prod.evolutions.enabled = false

这将在您的模型更改时更新您的数据库架构。但这很危险,不建议这样做,因为它会导致数据丢失。

第二种解决方案是使用进化。在你的 application.conf 文件中

%prod.jpa.ddl = none
%prod.evolutions.enabled = true

然后在您的 db/evolutions 文件夹中创建一个名为 1.sql 的文件。该文件应该负责创建所有表:

# --- !Ups
CREATE TABLE mymodel (
    id bigint NOT NULL,
    created timestamp without time zone,
    updated timestamp without time zone,
    email character varying(255),
    name character varying(255)
);

ALTER TABLE ONLY mymodel
    ADD CONSTRAINT mymodel PRIMARY KEY (id);

Create other tables here
....

# --- !Downs

DROP table mymodel;
....

将代码推送到 Heroku 后,您必须先运行 db evolutions:

heroku run play evolutions:apply

然后你重启你的 Heroku 服务器

heroku restart

然后你应该没问题。您可以在此处阅读有关 Play 1.x 演变的更多信息http://www.playframework.com/documentation/1.2.7/evolutions

【讨论】:

  • 感谢您的关心,但实际上我当时已经有了jpa.ddl=update的配置行,所以我认为不是这里的问题。无论如何,您提供的信息很有启发性,这就是我投票的原因。
  • @Thibault 不客气 :-) 你有 "%prod" 作为 jpa.ddl=update 的前缀吗?您是否确保在 application.conf 下方没有覆盖它的行?你能发布一些日志吗?这可能会有所帮助。
猜你喜欢
  • 2018-07-02
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 2023-04-05
  • 2015-03-13
相关资源
最近更新 更多