0

几个月来,我的 dev't 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 副本(在旧版和新 Postgress.app 版本的 /Library/Application Support/XXXX 中)具有正确(且未更改)的主机条目。

4

2 回答 2

0

答案原来是:

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

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

于 2019-02-07T17:21:45.693 回答
0

看起来您的脚本正在尝试连接未正确配置的地方

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

  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. 在问题中发布您的文件或其中的一部分,它对调试有很大帮助:)
于 2019-02-05T21:40:19.640 回答