【问题标题】:Rails app cannot connect to postgresql but rake, rails c, and rails db canRails 应用程序无法连接到 postgresql,但 rake、rails c 和 rails db 可以
【发布时间】:2013-04-19 20:19:08
【问题描述】:

问题

在生产环境中点击我的 rails 应用程序会导致 500 错误。检查生产日志的结果是:gist。检查详细的 postgresql 日志会导致:gist(实际的数据库凭据已被替换)。无论 database.yml 文件中指定了什么,postgres 日志都会显示每次连接尝试的端口号递增。

环境

服务器:Ubuntu 12.10(GNU/Linux 3.5.0-17-generic i686)

机架式服务器:独角兽

Rails v: 3.2.13

Ruby v: 1.9.3p0(真的很旧,也许这里有问题?)

我的尝试

仔细检查 database.yml:
尝试使用和不使用主机和端口,检查缩进并验证 yaml 格式。

production:
  adapter: postgresql
  database: <db_production>
  username: <db_user>
  password: <db_password>
  host: localhost
  port: 5432 

运行 rake、rails c 和 rails db:
我可以登录并成功运行所有这些命令。我必须在这里指定环境,也许这是问题所在?是不是环境没有设置好?

bundle exec rails db production

运行:

Rails.env?

导致生产,但这是在明确登录到 rails c 生产之后。

更改 pg_hba.conf
我尝试了在其他 SO 问题中找到的几种设置。本地的原始设置是:

local    all    all    peer

然后尝试:

local    all    all    md5

然后尝试:

local    all    all    trust

在完成所有这些更改后,我确保重新启动 pg 或 pg_ctl reload 以获取更改。

登录到 pg outside 或 rails:
即使在每次更改 pg_hba.conf 之后,我仍然可以使用 database.yml 中的相同凭据登录到我的生产数据库并查看我的所有数据,并确认所有迁移和数据库创建都已运行。

运行:

sudo -u <db_user> psql <db_production>

按预期工作。

结论

对我来说很明显问题不在于 postgres,而在于 rails 配置,也许环境没有切换到生产环境,因此它正在尝试使用 dev db creds?在我的生产 yml 文件中不存在。

【问题讨论】:

  • 我可以看到您使用的端口与database.yml 中指定的端口不同:connection received: host=localhost port=53920
  • 您应该问自己一个问题,您的应用从哪个环境开始?
  • @QumaraSixOneTour 这也是令人费解的地方,因为在我的 postgresql.conf 中,端口被明确设置为 5432。我可以在日志中看到每次尝试连接时端口都会增加,因此设置下次尝试连接时,53920 的端口会有所不同
  • 日志文件中的端口是连接来自的端口,换句话说,客户端使用传出端口53920连接到传入端口5432。
  • 你能发布你用来启动你的 Rails 服务器的命令吗?

标签: ruby-on-rails ruby postgresql ubuntu


【解决方案1】:

你在 postgres 安装后重启系统了吗?

你能从 pg 控制台访问 postgres 吗?

按照以下链接正确安装postgers。

http://railskey.wordpress.com/2012/05/19/postgresql-installation-in-ubuntu-12-04/

【讨论】:

  • 请总结 URI 中的步骤,因为该链接可能由于多种原因而无法正常工作
  • 感谢您的回复!自初始安装、Unicorn、Ubuntu 和 pg 以来,所有服务器都已重新启动。我确实可以访问 pg 控制台并可以从中登录我的应用程序数据库,这让我相信问题不在于 postgres 安装。
  • 您在控制台中遇到什么错误? database.yml 确保你写了正确的用户名和密码。如果您的步骤包括我的博客第 7 步,则默认用户名将是“postgres”和密码“unix root 密码”。
猜你喜欢
  • 2023-04-08
  • 2011-07-02
  • 2023-03-27
  • 2014-02-12
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多