Jeśli jesteś pewien, że ciąg połączenia jest już dobrze sformułowany, jak ten opisany przez gnerkusa, ostatnią rzeczą, którą musisz sprawdzić, jest hasło. Jeśli zawiera znaki inne niż alfanumeryczne, może to jest przyczyną problemu. Wygląda na to, że przyczyną tego jest Node.js lub sposób, w jaki działa javascript (nie jestem pewien, ponieważ pg-admin może się połączyć przy użyciu mojego początkowego hasła w porządku).
Moje hasło zawierało '+'
i '/'
(uzyskane przez utworzenie długiego json wypełnionego bełkotem, a następnie hashowanie go w wyniku łańcucha base64) i na pewno otrzymuje ten sam błąd, co twój. Gdy się go pozbędę (z parametrów połączenia i zaktualizowania hasła do bazy danych), działa dobrze.
Aha, i... '='
jest jednak akceptowane. Ponieważ wydaje się, że problem dotyczy procesu dekodowania adresu URL po stronie bazy danych. Kiedy wysłałem '+'
, myślę, że został zastąpiony przez ' '
co spowoduje nieprawidłowe hasło. Oraz '/'
powodował nieprawidłowy adres URL, który jest główną przyczyną naszego błędu (który mówi, że nie znaleziono). Spójrz na ten przykład.
postgres://username:sdkadady88da8+8ahdajd/[email protected]/database
Jestem pewien, że zdasz sobie sprawę, że istnieją dodatkowe '/'
co spowoduje awarię nieprawidłowego adresu URL. Tak więc protocol:// user:[email protected] / database
zmieniono na protocol:// [malformed user:[email protected]] / [malformed database name] / [some gibberish]
z powodu tego dodatkowego '/'
.
Jeśli twój kolega, który ma do niego dostęp za pomocą JSF, może edytować swoje parametry połączenia, sugeruję zaktualizować hasło na takie, które jest akceptowane przez oboje. Jeśli nie, musisz utworzyć innego użytkownika/rolę z tym samym prawem dostępu, ale innym hasłem, którego można użyć z Node.js.
EDYCJA:Albo jeszcze lepiej, zgodnie z dyskusją tutaj, spróbuj zakodować część hasła w ciągu połączenia. Mówią, że to działa. Nie zawracałem sobie głowy próbowaniem, ponieważ już zmieniłem hasło. Ponieważ nadal masz ten problem, możesz spróbować go najpierw wypróbować, zanim wykonasz jedną z moich dwóch powyższych sugestii.