Rails / Postgres:更改pg gem版本

时间:2017-02-07 09:39:43

标签: ruby-on-rails postgresql bundler gemset

在搞乱gemsets和pg gem版本后运行我的规范时遇到此错误消息:

 # --- Caused by: ---
 # PG::UndefinedColumn:
 #   ERROR:  column "waiting" does not exist
 #   LINE 1: ...me AS source, age(now(), xact_start) AS duration, waiting, q...
 #                                                                ^
 #   /Users/xx/.rvm/gems/ruby-2.3.3@xx/gems/pghero-1.4.2/lib/pghero/methods/basic.rb:84:in `select_all'

我尝试使用我昨天使用的两个版本的pg gem(0.18.40.19.0),指定Gemfile中的确切版本,安装它们({{ 1}})并通过检查bundle install确认该版本已被使用。两者都会产生错误。

我并不是很有经验,尤其是Postgres。我不知道宝石和操作系统包是如何一起玩的。所以我想知道是否有人知道发生了什么并给我一个提示?

谢谢

2 个答案:

答案 0 :(得分:1)

问题是Postgres版本。 in 9.6 pg_stat_activity

  

...用wait_event_type和替换等待列   wait_event函数。

作为解决方法,您可以尝试更改脚本,从而导致异常:

, age(now(), xact_start) AS duration, waiting,

为:

, age(now(), xact_start) AS duration, case when wait_event_type is null then false else true waiting,

答案 1 :(得分:1)

我有以下问题和建议

  • 卸载gemset中的所有pg gem版本
  • 卸载pg hero gem
  • 运行bundle install
  • 如果错误仍然存​​在,请尝试升级pghero gem - 当前版本为1.6.2(提及此错误状态为pghero)

您是否切换到另一个ruby版本(即使是次要版本)?如果是这样,请删除整个gemset(rvm gemset delete)并运行一个新的bundle install。这将针对更新的ruby版本构建所有本机扩展。

希望这有帮助。