PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

NodeJS Postgres erro getaddrinfo ENOTFOUND


Se você tiver certeza de que sua string de conexão já está bem formada como o gnerkus descrito, a última coisa que você precisa verificar é sua senha. Se contiver caracteres não alfanuméricos, talvez seja esse o motivo do problema. Parece que o Node.js ou a maneira como o javascript funciona causando isso (não tenho certeza, pois o pg-admin pode se conectar usando minha senha inicial muito bem).

Minha senha continha '+' e '/' (adquirido criando um json longo preenchido com rabiscos e, em seguida, faça o hash da string base64 resultante) e com certeza estou recebendo o mesmo erro como o seu. Depois de me livrar dele (da minha string de conexão e atualizar a senha do meu banco de dados), está funcionando bem.

Ah, e... '=' é aceito embora. Porque parece que o problema está no processo de decodificação de URL no lado do banco de dados. Quando enviei '+' , acho que foi substituído por ' ' que causará a senha incorreta. E o '/' estava causando url malformado, que é a causa raiz do nosso erro (que diz não encontrado). Dê uma olhada neste exemplo.
postgres://username:sdkadady88da8+8ahdajd/[email protected]/database

Tenho certeza que você perceberá que existem '/' extras o que causará a quebra do URL errado. Então, protocol:// user:[email protected] / database alterado para protocol:// [malformed user:[email protected]] / [malformed database name] / [some gibberish] por causa desse '/' extra .

Se seu colega que acessa usando JSF pode editar sua string de conexão, sugiro atualizar a senha para uma que seja aceita por ambos. Se eles não puderem, você precisará criar outro usuário/função com o mesmo direito de acesso, mas uma senha diferente que possa ser usada no Node.js.

EDIT:Ou melhor ainda, de acordo com a discussão aqui, tente codificar a parte da senha da sua string de conexão. Dizem que funciona. Não me incomodei em tentar, pois já alterei minha senha. Como você ainda tem esse problema, tente primeiro antes de fazer uma das minhas duas sugestões acima.