【发布时间】:2013-12-19 09:50:28
【问题描述】:
我们在Rails v4.0.1 应用程序上有一个Ruby v.2.0.0-p247,使用pg gem v0.17.0。
应用程序在使用HomeBrew 安装的PostgreSQL Server v9.2.4 下在Mac OS X Mavericks v10.9 下运行顺利,但在使用PostgreSQL Server 9.1 的Ubuntu v13.04 下抛出以下异常:
PG::UnableToSend: server closed the connection unexpectedly
This probably means the server terminated abnormally before or while processing the request.
事务查询(表单提交)之后发生异常。
我用database.yml 尝试了以下操作:
- 添加
reconnect: true - 添加
port: 5432 - 添加
socket: /var/run/postgresq/SOCKET_FILE
并在 Ubuntu 下使用 PostgreSQL 配置尝试了以下操作:
- 禁用 SSL。
- 将 TCP keepalives 参数更改为泵超时。
- 将日志级别更改为
DEBUG并在 PostgreSQL 服务器上搜索可能的错误。
也试过了:
- 降级到 pg gem v0.16.0。
- 将所有 Ubuntu 13.04 软件包更新到最新版本。
可能出了什么问题?
更新:
12/03/2013:有人建议检查防火墙设置。 ufw status 表示 ufw 已禁用。
2013 年 12 月 8 日:在尝试了一个普通的 Rails 应用程序并对当前应用程序进行了大量修改后,问题来自 rails4/activerecord-session_store gem。 lib/active_record/session_store/session.rb 中的第 47 行是罪魁祸首。
【问题讨论】:
-
您可以通过控制台登录吗?可能的原因之一是您的 PG 安装不干净。可能存在版本冲突。
-
@ArihantGodha 不确定通过控制台登录是什么意思,但 Rails 控制台启动正常。
-
@owahab 你在database.yml中指定你的PG数据库的端口了吗?
-
我不太确定 activerecord-session_store 真的是罪魁祸首;可能只是保存会话是发生的第一个查询,所以这就是问题出现的地方。你能清理 Postgres 的日志,启用 DEBUG 级别,重新启动服务器,通过 Rails 产生错误并向我们显示服务器启动和错误之间的完整日志输出吗?
-
您能否使用
psql连接到 Postgres 并以这种方式执行查询?
标签: ruby-on-rails ruby postgresql ubuntu activerecord