代码之家  ›  专栏  ›  技术社区  ›  jpw

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

  •  0
  • jpw  · 技术社区  · 5 年前

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

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

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

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

    pg::connectionbad:fatal:host、user、database、ssl off没有pg_hba.conf条目

    我很困惑,为什么当数据库连接配置指向远程Postgres URL时,错误会显示我的devt机器地址,为什么它会说ssl-off。

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

    (我想知道PG宝石是否有自己的复制品存放在某个地方。)

    我可以找到的pg_hba.conf的副本(在/library/application support/xxxx中,对于新的和旧的postgres.app版本)具有正确的(和不变的)主机条目。

    2 回复  |  直到 5 年前
        1
  •  0
  •   Rovel    5 年前

    您的脚本似乎正在尝试连接未正确配置的某个位置。

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

    1. 您的database.yml或连接字符串、数据库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. 将您的文件或其中的一部分发布到问题中,这有助于调试:)
        2
  •  0
  •   jpw    5 年前

    答案是:

    1. 注解 pg 在Gemfile
    2. bundle install
    3. 代替 前列腺素
    4. 捆绑安装

    我怀疑当宝石 前列腺素 已安装,它 动态地 建立一些到PostgreSQL的链接,因此如果 移动 PostgreSQL(就像我安装postgres.app时一样)需要删除 前列腺素 宝石然后重新添加。

    推荐文章