postgresql - heroku pg :sql --app <app_name> tries to connect to wrong host

标签 postgresql heroku pg psql

我刚刚在 heroku 上部署了我的生产应用程序。

我仍然可以使用以下方法毫无问题地访问我的登台数据库:

heroku pg:psql --app staging-app

但是当我尝试为生产做同样的事情时:

heroku pg:psql --app production-app

我收到连接超时和一条错误消息,指出主机 xxx 未在端口 5432 上监听。

当我访问 heroku 网站并获取生产数据库的设置时,它显示它正在主机 yyy 上运行(即,不是 xxx)。谁能告诉我如何让 pg:psql 命令连接到正确的主机?

Web 服务器似乎可以毫无问题地连接到数据库,如果我运行:

heroku run --app production-app rails console

然后我可以通过 ActiveRecord 查看数据库中的记录。

顺便说一句,命令:

heroku pg:info --app production-app

给出这些结果:

=== HEROKU_POSTGRESQL_MAROON
Plan:        Dev
Status:      available
Connections: 0
PG Version:  9.1.5
Created:     2012-08-08 17:55 UTC
Data Size:   5.9 MB
Tables:      0
Rows:        0/10000 (In compliance)
Fork/Follow: Unavailable

=== SHARED_DATABASE (DATABASE_URL)
Data Size: 600k

最佳答案

显然正确的命令是:

heroku pg:psql HEROKU_POSTGRESQL_MAROON --app production-app

因此,数据库名称和 --app 参数都是必需的(出于某种原因,我遇到的运行此命令的所有示例都执行了一个或另一个,但不是两个)。

我猜测即使指定了应用程序也需要数据库名称,因为存在 SHARED_DATABASE 数据库(该数据库不存在于我的暂存应用程序中)。

顺便说一句,当我意识到我正在使用现已弃用的 heroku gem 并切换到 heroku toolbelt 时,我找到了这个问题的答案,而不是尝试连接到无效主机并在 60 秒后超时,实际上打印了一条半有用的消息:

 !    Unknown database. Valid options are: HEROKU_POSTGRESQL_MAROON_URL, SHARED_DATABASE

(我将其评为半有用,因为您必须足够了解才能从数据库名称中删除 _URL 部分。)


更新:


在尝试部署我的应用程序时,我发现 rake db:setup 之类的东西无法正常工作,因为它们将转到共享数据库而不是 postgres 数据库。

我取消了共享数据库的配置(请参阅 https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-postgres#3-deprovision-your-shared-database)。这样做之后,我还必须手动将 DATABASE_URL 设置为与 HEROKU_POSTGRESQL_MAROON_URL 相同(文档似乎暗示这将自动发生,但在我的情况下它没有)。

现在我可以运行命令了

heroku pg:psql --app production-app

没有问题,最重要的是,我的 rake 任务在正确的数据库上运行。

希望这对其他人有帮助。

关于postgresql - heroku pg :sql --app <app_name> tries to connect to wrong host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035448/

相关文章:

node.js - PG(node-postgres)VS。 Sequelize

ruby PG gem `exec_params` 与 `exec_prepared`

python - 统一码编码错误 : 'ascii' codec can't encode character u'\u2019' in position 47: ordinal not in range(128)

Heroku compass buildpack compass 失败

Heroku,这里还什么都没有。添加自定义域后

heroku - 无法使用 Heroku 配置 Zerigo

PHP5 + PostgreSQL - pg_fetch_row() 返回字符串而不是数组

postgresql - 有没有办法让 Delphi 的 FireDAC 识别 FireDAC 生成的 PostgreSQL 位置参数?

postgresql - 查询中的 Postgres 时间戳格式

java - 如何在 Spring Boot 中正确指定数据库模式?