【问题标题】:Connecting to Postgres database in heroku using Ruby, crashes application使用 Ruby 连接到 Heroku 中的 Postgres 数据库,导致应用程序崩溃
【发布时间】:2020-11-18 20:35:33
【问题描述】:

我正在尝试连接到我在 Heroku 中运行的 PostgreSQL 数据库,该数据库是使用 postgres-addon 设置的。但是当我做应用程序崩溃时(我省略了我的 IP 和 APPS URL):

$ heroku logs --tail
 ›   Warning: heroku update available from 7.42.0 to 7.42.2.
2020-07-29T08:53:16.308297+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/all" host=URL request_id=a80d2c63-af75-4ba4-9288-69148e2e5068 fwd="IP" dyno= connect= service= status=503 bytes= protocol=https

我连接数据库的方式是

require 'pg'
class Database

  def initialize
    begin
      @conn = PG.connect env["DATABASE_URL"]
    rescue PG::Error => e
      puts e.message
    end
  end
...
end

一旦调用 PG.connect,应用程序就会崩溃,我不知道为什么。据我所知,我使用的是正确的 ENV 变量。

添加信息:

  1. 我已经意识到,如果我使用heroku pg:psql 从 CLI 连接到数据库,那么我可以创建表格和插入条目。

  2. 我尝试禁用同样无效的 SSL 模式

  3. 我可以从 DBeaver 连接

【问题讨论】:

  • 您能否成功运行heroku pg:infoheroku pg:psql 等CLI 命令? (后者假设您在本地安装了 Postgresql 工具。)
  • 是的@rmlockerd 我能做到
  • 您是否检查过问题是否是由sslmode parameter 引起的?您可以尝试设置环境变量PGSSLMODE=disable 看看这是否解决了问题,然后找到一种方法以更合适的方式微调您的sslmode
  • 会试试这个谢谢@GiuseppeSchembri

标签: ruby postgresql heroku


【解决方案1】:

我找到了解决问题的方法。 如果我将身份验证项(数据库名称、端口、密码等)添加到 ENV 变量并进行完整配置:

@conn = PG.connect :dbname => USER, :user => USER, :password => PASSWORD, 
                   :host => HOST, :port => PORT

然后连接工作。但是,原来的PG.connect ENV['DATABASE_URL'] 应该可以工作,但对某些用户来说。

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2015-08-14
    • 2013-02-04
    相关资源
    最近更新 更多