sql >> データベース >  >> RDS >> PostgreSQL

NodeJSPostgresエラーgetaddrinfoENOTFOUND

    接続文字列が、説明されているgnerkusのようにすでに整形式であることが確実な場合、最後に確認する必要があるのはパスワードです。英数字以外の文字が含まれている場合は、それが問題の原因である可能性があります。 Node.jsまたはjavascript自体の動作のいずれかが原因のようです(pg-adminは初期パスワードを使用して接続できるため、よくわかりません)。

    パスワードに'+'が含まれていました および'/' (gibberishで満たされた長いjsonを作成し、それをハッシュしてbase64文字列を生成することで取得されます)そして私は確かにあなたと同じエラーを受け取ります。 (接続文字列とデータベースのパスワードの更新から)それを取り除くと、正常に機能しています。

    ああ、そして... '=' しかし受け入れられます。問題はデータベース側のURLデコードプロセスにあるように思われるためです。 '+'を送信したとき 、' 'に置き換えられたと思います これにより、パスワードが正しくなくなります。そして'/' エラーの根本的な原因である不正な形式のURLを引き起こしていました(これは見つかりませんでした)。この例を見てください。

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

    余分な'/'があることに気付くと思います これにより、間違ったURLが壊れます。したがって、protocol:// user:[email protected] / database protocol:// [malformed user:[email protected]] / [malformed database name] / [some gibberish]に変更されました その余分な'/'のために 。

    JSFを使用してアクセスする同僚が接続文字列を編集できる場合は、パスワードを両方で受け入れられるものに更新することをお勧めします。できない場合は、同じアクセス権を持つが、Node.jsから使用できるパスワードが異なる別のユーザー/ロールを作成する必要があります。

    編集:またはさらに良いことに、ここでの議論によると、接続文字列のパスワード部分をエンコードしてみてください。彼らはそれがうまくいくと言います。すでにパスワードを変更しているので、わざわざ試してみませんでした。この問題はまだ発生しているため、上記の2つの提案のいずれかを実行する前に、最初に試してみることをお勧めします。



    1. MySQLのTOPに代わるものはありますか?

    2. 結果をコンマ区切りのリストとして返すPostgreSQLクエリ

    3. MariaDBの時刻または日時の値にAM/PMを追加する方法

    4. mysqlテーブル名で(-)ダッシュを使用する