PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreur NodeJS Postgres getaddrinfo ENOTFOUND

Si vous êtes sûr que votre chaîne de connexion est déjà bien formée comme celle décrite par gnerkus, la dernière chose que vous devez vérifier est votre mot de passe. S'il contient des caractères non alphanumériques, c'est peut-être lui qui cause le problème. Il semble que ce soit Node.js ou la façon dont javascript fonctionne lui-même (je ne suis pas vraiment sûr puisque pg-admin peut très bien se connecter en utilisant mon mot de passe initial).

Mon mot de passe contenait '+' et '/' (acquis en créant un long json rempli de charabia, puis en le hachant de la chaîne base64 résultante) et je reçois certainement la même erreur que la vôtre. Une fois que je m'en suis débarrassé (à partir de ma chaîne de connexion et en mettant à jour le mot de passe de ma base de données), cela fonctionne bien.

Ah, et... '=' est cependant accepté. Parce qu'il semble que le problème soit lié au processus de décodage d'URL côté base de données. Quand j'ai envoyé '+' , je pense qu'il a été remplacé par ' ' ce qui entraînera un mot de passe incorrect. Et le '/' provoquait une URL mal formée qui est à l'origine de notre erreur (qui indique introuvable). Jetez un oeil à cet exemple.

postgres://username:sdkadady88da8+8ahdajd/[email protected]/database

Je suis sûr que vous vous rendrez compte qu'il y a des '/' supplémentaires ce qui entraînera la panne d'une mauvaise URL. Donc, protocol:// user:[email protected] / database changé en protocol:// [malformed user:[email protected]] / [malformed database name] / [some gibberish] à cause de ce '/' supplémentaire .

Si votre collègue qui y accède à l'aide de JSF peut modifier sa chaîne de connexion, je suggère de mettre à jour le mot de passe en un mot accepté par les deux. S'ils ne le peuvent pas, vous devez créer un autre utilisateur/rôle avec le même droit d'accès mais un mot de passe différent pouvant être utilisé à partir de Node.js.

EDIT :Ou mieux encore, selon la discussion ici, essayez d'encoder la partie mot de passe de votre chaîne de connexion. Ils disent que ça marche. Je n'ai pas pris la peine d'essayer car j'ai déjà changé mon mot de passe. Puisque vous avez toujours ce problème, vous voudrez peut-être l'essayer avant de faire l'une de mes deux suggestions ci-dessus.