0
votes

Problème de connexion Knex? EAI_AGAIN

Quoi que je fasse, j'obtiens toujours cette erreur lors de l'exécution de knex.

const knexConnection = knex({
    client: 'pg',
    connection: "postgres://user:password@localhost:5432/db-name",
})

Je suis connecté à localhost et je suis sûr que je fais tout correctement. Cette configuration exacte a fonctionné la dernière fois que j'ai ouvert ce projet. J'ai même confirmé que j'étais sur les bonnes versions de npm et de nœuds

"errno": "EAI_AGAIN",
"code": "EAI_AGAIN",
"syscall": "getaddrinfo",
"hostname": "knex",
"host": "knex",
"port": 3

Mettre le nom d'utilisateur, le mot de passe, etc. dans dbeaver fonctionne très bien. Ce n'est donc pas un problème avec le serveur psql local, ni avec le mot de passe et autres. En regardant la documentation de knex aussi, cela ne semble pas être un problème de syntaxe.

Que se passe-t-il? Comment puis-je résoudre ce problème?


2 commentaires

Il s'agit d'une erreur DNS lors de la tentative de connexion à votre serveur PostgreSQL


Comment puis-je avoir une erreur DNS avec localhost?


3 Réponses :


1
votes

Dans l'erreur, vous pouvez voir que vous essayez de rechercher un nom d'hôte appelé knex et DNS fois sorti. Vérifiez vos câbles. Quelque chose n'est pas configuré comme vous le pensez.

Vérifiez également la structure StackTrace où exactement cette erreur provient.


0 commentaires

0
votes

Quand Mikael a dit que l'hôte essayant de se connecter était "knex" et non "localhost", j'ai essayé de mettre la variable en tant qu'objet.

const knexConnection = knex({
    client: 'pg',
    connection: {host:host, user:user, password:password, database:database, port:port},
})

et avec les mêmes valeurs, ça a marché. Donc, je ne sais pas pourquoi l'URL n'a pas fonctionné. J'espère que c'était juste cet incident, et que cela n'arrivera pas avec mon serveur postgresql réel.


1 commentaires

marquera que c'est la bonne réponse demain lorsque stackoverflow me le permettra



0
votes

À mon humble avis, étant donné que tous les autres paramètres sont corrects, votre mot de passe / utilisateur contient probablement des caractères spéciaux qui ont cassé l'analyseur d'URL, puis knex essaie de se connecter à une URL qui n'existe pas .

Vous devriez essayer avec un autre utilisateur ou changer le mot de passe de l'utilisateur en quelque chose sans caractères spéciaux. Vous pouvez voir cette question connexe

Cela expliquerait même pourquoi votre connexion utilisant un objet de configuration fonctionne, mais pas avec l'URI.


1 commentaires

c'est peut-être ce que c'était. Je viens de changer le mot de passe et les serveurs psql locaux en raison du redémarrage de Linux. Quoi qu'il en soit, le placer dans un objet avec exactement les mêmes variables (importées d'un .env) a résolu le problème.