【问题标题】:Rspec : PG::ConnectionBad: PQsocket() can't get socket descriptorRspec:PG :: ConnectionBad:PQsocket()无法获取套接字描述符
【发布时间】:2018-04-28 01:19:10
【问题描述】:

我运行了我的 rspec,但大部分测试都失败了。我也遇到了同样的错误,那就是:

    Failure/Error: Unable to find matching line from backtrace
    ActiveRecord::StatementInvalid:
    PG::ConnectionBad: PQsocket() can't get socket descriptor: BEGIN

我找到了一个与我的问题相似的question,但还没有答案,我也尝试了这个link 的解决方案,但它对我没有任何影响。我打开了我的测试控制台并运行了一些最简单的查询,它工作正常。

【问题讨论】:

  • 这个问题一直困扰着我一段时间。在触发数据库访问测试的其余部分失败之前,我的规范通常会运行几个测试。在哪些测试会导致规范失败方面并不一致。
  • 测试套件中似乎存在连接泄漏,最终耗尽了连接池。问题是这可能发生在哪里(以及如何解决它)。
  • 我创建了一个issue with rspec - 也许我们可以对此有更多的了解。
  • 我遇到了同样的问题;对我来说,这是在长时间运行的delayed_job 中发生的,它从 CSV 文件中导入了一些记录。我切换到 MySQL,这解决了问题。

标签: ruby-on-rails rspec rspec-rails


【解决方案1】:

pg: '0.18.1' 可能有问题。我尝试恢复到0.18.0,我相信问题已经消失了。

在本地进行更多测试后,我将在 repo 上打开一个问题。 我添加了这个issue on the pg repo

编辑:我错了。 但实际上有帮助的是安装 spring-commands-rspec gem。我认为它最终为我做的是将它缓存在它工作的状态。尽管它也可以轻松地将其缓存到它没有的状态。

【讨论】:

  • 呃。经过进一步测试,看来我错了。
  • 实际上有帮助的是安装spring-commands-rspec gem。我认为它最终为我做的是将它缓存在它工作的状态。尽管它也可以轻松地将其缓存到它没有的状态。 :(
  • 请更新答案注意不正确!
【解决方案2】:

我不知道这些问题是否有关联——但我发现通过使用本地 unix 套接字文件而不是 localhost,关联问题似乎已经解决了;也许它也能帮助你?

"Rake spec" failing most tests, but "rails s" working fine on Diaspora source

【讨论】:

  • 遗憾的是,我已经尝试了两种连接选项,但对我来说并没有什么不同。
【解决方案3】:

我遇到了同样的错误,还有一些其他错误,例如 PG::UnableToSend: socket not open。似乎在随机时间出错。我追查到它实际上是由于模型具有不正确的belongs_to 关联。这可能不适用于您,但希望对某人有所帮助。

我有:

belongs_to :user, class_name: User

应该是什么时候:

belongs_to :user, class_name: 'User'

不知何故,这一行中断了我所有的 PG 套接字连接。

【讨论】:

    【解决方案4】:

    可能对 rspec 没有任何影响,但以防万一。我为此奋斗了数周,对我来说,这是乘客催生新流程的方式。我只需要添加这个

    # Rails -- prepared statements incompatible with faster spawn methods.  
    PassengerSpawnMethod conservative
    

    \etc\apache2\mods-available\passenger.conf

    https://www.phusionpassenger.com/library/indepth/ruby/spawn_methods/

    【讨论】:

      【解决方案5】:

      我已经安装了'pg', '0.20.0',通过降级到 0.19.0 它对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多