NodeJS Postgres erreur getaddrinfo ENOTFOUND
- Je utiliser pg://user:pass@localhost:port/table
pour la connexion à ma base de données AWS. Lorsque j'utilise localhost, l'application fonctionne très bien, mais quand j'essaie de me connecter AWS serveur, il tombe à l'eau.
Même une simple connexion code me donne cette erreur.
Le nom de la base est les gens et il est en cours d'exécution sur le port 8080 mais cette erreur, c'est montrer 5432 même si je déclare le bon numéro de port dans le conString.
Erreur: getaddrinfo ENOTFOUND personnes de personnes:5432
au errnoException (dns.js:26:10)
au GetAddrInfoReqWrap.onlookup [comme oncomplete] (dns.js:77:26)
C'est mon code pour l'instant:
var pg = require("pg");
var conString = "pg://someuser:pass@db-endpoint:8080/postgres";
var client = new pg.Client(conString);
client.connect();
- Juste pour les éclaircissements que vous essayez de vous connecter depuis la machine de la base de données est en cours d'exécution sur? Ou à partir d'un hôte différent quand vous obtenez une erreur?
- vous devez spécifier l'adresse du serveur correctement. prendre de référence de ce lien: stackoverflow.com/questions/23259697/...
- Je suis en cours d'exécution de l'application en local et en essayant de connecter l'aws db d'instance de point de terminaison.
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sûr de votre chaîne de connexion est déjà bien formé comme celui gnerkus décrit, la dernière chose dont vous avez besoin à faire est de vérifier votre mot de passe. Si c'est contiennent des caractères non alphanumériques, c'est peut-être celui qui cause le problème. Il semble que ce soit la Node.js ou le chemin du travail javascript lui-même à l'origine de ce (je ne suis pas vraiment sûr car pg-administrateur peut se connecter avec mon mot de passe initial très bien).
Mon mot de passe a été contenir
'+'
et'/'
(acquise par la création d'un long json rempli avec du charabia et puis de hachage qui base64 chaîne) et je vous fait de recevoir le même message d'erreur semblable à la vôtre. Une fois je me débarrasser de lui (à partir de ma chaîne de connexion et la mise à jour de ma base de données de mot de passe), ça fonctionne.Oh, et ...
'='
est acceptée si. Car il semble que le problème est avec l'url processus de décodage à la base de données secondaires. Quand j'ai envoyé'+'
, je pense que c'remplacé par' '
qui sera la cause de mot de passe incorrect. Et le'/'
a été l'origine de la malformation de url, ce qui est la cause de notre erreur (qui ne dit pas trouvé). Jetez un oeil à cet exemple.Je suis sûr que vous vous rendrez compte qu'il y a des extra
'/'
qui va entraîner une mauvaise url briser. Donc,protocol://user:pass@host /database
changé enprotocol://[malformed user:pass@host] /[malformed database name] /[some gibberish]
en raison de ce surcroît d''/'
.Si votre collègue qui s'y accéder en utilisant JSF peut modifier leur chaîne de connexion, je suggère de mettre à jour le mot de passe de l'un, qui l'a accepté par les deux. S'ils ne peuvent pas, alors vous avez besoin de créer un autre utilisateur/rôle avec le même droit d'accès, mais différent du mot de passe qui peut être utilisé à partir de Node.js.
EDIT:
Ou mieux encore, selon la discussion ici, essayez de coder la partie mot de passe de votre chaîne de connexion. Ils disent que cela fonctionne. Je n'ai pas pris la peine de l'essayer puisque j'ai déjà changer mon mot de passe. Depuis que vous avez encore ce problème, vous voudrez peut-être essayer d'abord avant de faire un de mes deux suggestions ci-dessus.
Le port par défaut pour une connexion de base de données Postgres est 5432. La base de données Postgres sur AWS est probablement en cours d'exécution sur ce port. Aussi, la chaîne de connexion doit être dans ce format:
tel que défini dans la nœud-postgres de la documentation. Vous devez mettre à jour votre chaîne de connexion pour:
could not connect to postgres { [Error: getaddrinfo ENOTFOUND myapp myapp:5432] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'myapp', host: 'myapp', port: 5432 }
Assurez-vous que votre URL ne contient pas de
http://