【问题标题】:Ruby app no longer able to access remote Heroku Postgres - AFTER installing Postgres.app locallyRuby 应用程序不再能够访问远程 Heroku Postgres - 在本地安装 Postgres.app 之后
【发布时间】:2019-02-05 20:45:10
【问题描述】:

几个月来,我开发的 Mac 上的一个 ruby​​ (sinatra) 应用程序“foo.rb”一直在使用远程 Heroku 托管的 Postgres 数据库。

该应用不使用任何本地数据库,无论是在开发还是生产中。

对于另一个项目,我从 Heroku 安装了 Postgress.app,首先按照建议删除了一个非常旧的版本,使用 brew remove postgresql

下次我运行 foo.rb 并尝试使用 SomeModel.count 访问(远程)数据库时,我收到错误:

PG::ConnectionBad: FATAL: no pg_hba.conf entry for host , user , database , SSL off

我很困惑为什么当数据库连接配置指向远程 postgres url 时错误显示我的 devt 机器地址,以及为什么它说 SSL 关闭。

任何想法如何摆脱错误?有什么方法可以查看它抱怨的 pg_hba.conf 的路径,以便我可以验证它是否包含正确的主机条目?

(我想知道 pg gem 是否有自己的副本隐藏在某个地方。)

我可以找到的 pg_hba.conf 副本(在 /Library/Application Support/XXXX 中适用于新旧 Postgress.app 版本)具有正确(且未更改)的主机条目。

【问题讨论】:

  • 您的本地 pg_hba.conf 文件不相关。您尝试连接的服务器上的那个是!检查您尝试运行的应用程序的连接参数。您的本地 pg 安装可能已经更改了一些相关的环境变量。见:libpq env variables

标签: ruby postgresql heroku postgres.app


【解决方案1】:

您的脚本似乎正在尝试连接未正确配置的地方

在这种情况下要检查的事项:

  1. 你的 database.yml 或连接字符串,DATABASE_URL 匹配你来自 postgres.app 的本地主机

  2. 你的 postgres.app 是否正在运行并且有一个数据库服务器正在运行(检查你的 osx 顶部栏上的大象图标)

  3. 您已正确安装并配置了您需要设置路径的 postgres 应用程序,您可以通过在新的终端窗口中输入 psql 来检查它是否运行正常。

配置您的 $PATH 以使用包含的命令行工具(可选):

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
  1. 在问题中发布您的文件或其中的一部分,它对调试有很大帮助:)

【讨论】:

  • 从字面上看,完全相同的代码(仅使用远程 heroku postgres)在我为不相关的应用程序安装在我的开发机器上的 postgres.app 后无法访问远程数据库。跨度>
  • 可能您的路径已设置为此 heroku 数据库,现在指向 postgres 应用程序,postgres 应用程序是否处于活动状态并正在运行数据库服务器?
  • @Rovel OP 正在尝试连接到远程机器上的 pg 数据库。
  • @Rovel 你提到的路径让我走上了正轨,谢谢!
【解决方案2】:

答案竟然是:

  1. 在 Gemfile 中注释掉 pg
  2. bundle install
  3. 替换pg
  4. bundle install

我怀疑在安装 gem pg 时,它动态 建立了一些到 postgresql 的链接,所以如果你 移动 postgresql(就像我在安装 Postgres 时所做的那样。应用程序)您需要删除 pg gem 然后重新添加它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2019-10-12
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多