Rspec: PG:: ConnectionBad: PQsocket() не может получить дескриптор сокета

Я запускаю свой rspec, и большая часть теста была неудачной. Я получил для них ту же ошибку, что:

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

Я нашел question, который похож на мою проблему, но ответа еще нет, и я также попробовал решение из этого ссылка, но для меня не было никаких различий. Я открыл тестовую консоль и выполнил несколько простых запросов, и это сработало.

Ответ 1

Может возникнуть проблема с pg: '0.18.1'. Я попытался вернуться к 0.18.0, и я считаю, что проблема ушла.

Я открою проблему на репо после тестирования немного более локально. Я добавил эту проблему в pg repo.

Ответ 3

Может не иметь никакого отношения к 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/

Ответ 4

Я получал ту же ошибку и некоторые другие ошибки, например PG::UnableToSend: socket not open. Считается ошибкой в ​​случайные моменты времени. Я проследил его, и это было из-за модели с неправильной ассоциацией belongs_to. Это может не относиться к вам, но, надеюсь, это помогает кому-то.

У меня было:

belongs_to :user, class_name: User

Когда это должно было быть:

belongs_to :user, class_name: 'User'

Каким-то образом одна строка разбивала все соединения сокетов PG.