【问题标题】:Rails / Postgres: Error after changing pg gem versionRails / Postgres:更改pg gem版本后出错
【发布时间】:2017-02-07 09:39:42
【问题描述】:

在弄乱 gemset 和 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 如何一起玩等等。所以我想知道是否有人知道发生了什么并给我提示?

谢谢

【问题讨论】:

  • 你可以尝试迁移一次吗 -> rake db:migrate
  • 在此之前规格运行良好吗?我认为您的测试环境错过了一些迁移。
  • 我在测试和开发环境中运行迁移
  • postgres 9.5 在 pg_stat_activity 中有列等待,而 9.6 有 wait_event_type - 这会导致错误

标签: ruby-on-rails postgresql bundler gemset


【解决方案1】:

我有以下问题和建议给你

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

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    问题是 Postgres 版本。 in 9.6 pg_stat_activity

    ... 将等待列替换为 wait_event_type 和 等待事件。

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

    , 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,
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2012-07-11
      相关资源
      最近更新 更多