gpt4 book ai didi

Ruby Sinatra/Postgres - 无法使用 PG.connect 连接到 heroku 数据库?

转载 作者:数据小太阳 更新时间:2023-10-29 09:03:08 26 4
gpt4 key购买 nike

我正在尝试使用 Sinatra 和 PostgreSQL 在 Heroku 上建立一个站点。它在本地工作(连接到本地数据库),但在将其推送到 Heroku 并更改我的 PG.connect 之后为了反射(reflect)这一点,我在页面尝试访问数据库时遇到了一个内部服务器错误

require 'uri'
require 'pg'

uri = URI.parse(ENV['DATABASE_URL'])

def db(uri)
begin
connection = PG.connect(uri.hostname, uri.port, nil, nil, uri.path[1..-1], uri.user, uri.password)
yield(connection)
ensure
connection.close
end
end

我很确定这些解析正确,因为 ENV['DATABASE_URL']显示完整的 postgres://user:password@host:port/database我期望的信息,如果我在 IRB uri.hostname、ui.port 等中做同样的事情,所有返回的都是预期的。

这是我第一次尝试让网站在 Heroku 上运行,所以我什至不确定如何解决这个问题。 (我在谷歌上搜索了昨天的所有内容。)

heroku pg 的结果:

=== DATABASE_URL
Plan: Hobby-dev
Status: Available
Connections: 0/20
PG Version: 9.4.2
Created: 2015-05-30 19:24 UTC
Data Size: 17.7 MB
Tables: 5
Rows: 9320/10000 (In compliance, close to row limit)
Fork/Follow: Unsupported
Rollback: Unsupported

当我执行 heroku pg:psql <database> 时,所有表格都会显示出来来自 cli。

我看到的一些答案说要添加 database.yml到我的应用程序根目录,所以:

production:
adapter: 'postgresql'
database: '<database>'
host: ENV['DATABASE_URL']
username: '<username>'

我可能缺少一些简单的东西,但我还没有在 Heroku 上看到 Sinatra/PSQL 的完整指南——没有任何内容专门用于设置和连接到您的数据库。 (一切似乎都与 Rails 相关。)

最佳答案

在你的database.yml您需要为 host 指定正确主机的文件入口。您正在传递存储在 DATABASE_URL 中的内容(类似 postgres://user:password@host:port/database )但它应该只是主机。

如果它不是 PostgreSQL 的默认端口,您还需要指定一个端口。

编辑:还应该指出,如果您打算将主机(或其他任何东西 - 您绝对应该用于用户名和密码)存储在环境变量中,您需要将其包装起来,例如<%= ENV['HOST'] %> ,不只是 ENV['HOST'] (即你如何在上面的 database.yml 摘录中)

关于Ruby Sinatra/Postgres - 无法使用 PG.connect 连接到 heroku 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com