Rspec: PG::ConnectionBad: PQsocket() ne peut pas obtenir descripteur de socket
j'ai lancé mon rspec et la plupart des tests ont échoué. J'ai eu le même message d'erreur pour eux, qui est:
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::StatementInvalid:
PG::ConnectionBad: PQsocket() can't get socket descriptor: BEGIN
j'ai trouvé un question qui est similaire à mon problème, mais il n'y a pas encore de réponse et j'ai aussi essayé la solution de ce lien, mais ça n'a fait aucune différence pour moi. J'ai ouvert ma console de test et lancé quelques requêtes simples et ça a marché.
5 réponses
Il y a peut être un problème avec pg: '0.18.1'
. J'ai essayé de revenir à 0.18.0
, et je crois que le problème a disparu.
je vais ouvrir un sujet sur le repo après avoir testé un peu plus localement. J'ai ajouté ce question sur le pg repo.
EDIT: j'avais tort. En fait, ce qui a aidé, c'est l'installation du GEM spring-commands-rspec. Je pense que ce qu'il a fini par faire pour moi était de le cacher dans un état où ça marchait. Bien qu'il puisse aussi facilement le mettre en cache un état où il ne l'a pas fait.
Je ne sais pas si les problèmes sont liés - mais j'ai trouvé qu'en utilisant le fichier de socket unix local au lieu de localhost que le problème semblait disparaître pour la question liée; peut-être qu'il pourrait vous aider aussi?
peut ne pas avoir de rapport avec rspece, mais jeter cela là-bas juste au cas où. Je me suis battu pendant des semaines et pour moi, c'était la façon dont le passager engendre de nouveaux processus. J'ai juste eu à ajouter ce
# 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/
j'avais installé 'pg', '0.20.0'
, en déclassant à 0.19.0 ça a marché pour moi.
j'avais la même erreur, et quelques autres erreurs comme PG::UnableToSend: socket not open
. Semblait erreur à des moments aléatoires. Je l'ai tracé et il était en fait dû à un modèle ayant un belongs_to
association. Cela pourrait ne pas s'appliquer à vous, mais j'espère que ça aide quelqu'un.
j'ai eu:
belongs_to :user, class_name: User
Quand il aurait dû être:
belongs_to :user, class_name: 'User'
D'une façon ou d'une autre, cette ligne brisait toutes mes connexions PG.