Ruby应用程序无法再访问远程Heroku Postgres-在本地安装Postgres应用程序后



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

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

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

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

PG::ConnectionBad:FATAL:主机、用户、数据库没有PG_hba.conf条目,SSL关闭

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

有没有想过如何消除这个错误?有没有办法查看它抱怨的pg_hba.conf的PATH,这样我就可以验证它是否包含正确的主机条目?

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

我能找到的pg_hba.conf的副本(在旧版和新版Postgress.app的/Library/ApplicationSupport/XXX中)都有正确的(未更改的)主机条目。

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

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

  1. 您的database.yml或连接字符串database_URL与postgres.app 中的localhost匹配

  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. 在问题中发布您的文件或其中的一部分,这对调试有很大帮助:)

答案是:

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

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

相关内容

  • 没有找到相关文章

最新更新