Rails / Postgres:更改 pg gem 版本后出错

Rails / Postgres: Error after changing pg gem version

当 运行 我的规格在弄乱 gem 集和 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 中指定确切的版本,安装它们( bundle install),并通过检查Gemfile.lock确认确实使用了该版本。两者都不断产生错误。

我不是很有经验,尤其是 Postgres。我不知道 gems 和 OS-packages 如何一起玩等。所以我想知道是否有人知道发生了什么事并给我提示?

谢谢

问题出在 Postgres 版本上。 in 9.6 pg_stat_activity

... replace the waiting column with wait_event_type and 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,

我有以下问题和建议给你

  • 卸载您gem设置
  • 中的所有 pg gem 版本
  • 卸载 pg hero gem
  • 运行 bundle install
  • 如果错误仍然存​​在,请尝试升级 pghero gem - 当前版本是 1.6.2(提到这个是因为你的错误状态是 pghero)

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

希望对您有所帮助。