gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:57:31 25 4
gpt4 key购买 nike

我刚刚在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com