ark*_*ios 7 javascript postgresql express
我用它pg://user:pass@localhost:port/table来连接我的AWS数据库.当我使用localhost时,该应用程序工作正常,但当我尝试连接AWS服务器时,它崩溃了.
即使是简单的连接代码也会给我这个错误.数据库名称是人,它在端口8080上运行,但是在此错误中它显示5432,即使我在conString中声明了正确的端口号.
错误:getaddrinfo ENOTFOUND people people:5432 at errnoException(dns.js:26:10)at GetAddrInfoReqWrap.onlookup [as oncomplete](dns.js:77:26)
到目前为止这是我的代码:
var pg = require("pg");
var conString = "pg://someuser:pass@db-endpoint:8080/postgres";
var client = new pg.Client(conString);
client.connect();
Kur*_*uki 14
如果您确定您的连接字符串已经像所描述的gnerkus一样格式良好,那么您需要检查的最后一件事是您的密码.如果它包含非字母数字字符,那么可能是导致该问题的人.它似乎是Node.js或javascript工作方式导致这种情况(我不确定,因为pg-admin可以使用我的初始密码连接就好了).
我的密码包含'+'和'/'(通过创建一个充满乱码的长json然后哈希得到base64字符串获得)并且我确实收到了与你相同的错误.一旦我摆脱它(从我的连接字符串和更新我的数据库的密码),它工作正常.
哦,'='然而...... 被接受了.因为似乎问题在于数据库端的url解码过程.当我发送时'+',我认为它取代了' '哪个会导致密码错误.并且'/'导致格式错误的url,这是我们错误的根本原因(说没有找到).看看这个例子.
postgres://username:sdkadady88da8+8ahdajd/ashdi==@localhost/database
我相信你会发现有额外的东西'/'会导致错误的网址崩溃.所以,protocol:// user:pass@host / database改变成protocol:// [malformed user:pass@host] / [malformed database name] / [some gibberish]的,因为额外的'/'.
如果使用JSF访问它的同事可以编辑他们的连接字符串,我建议将密码更新为两者都接受的密码.如果他们不能,那么您需要创建另一个具有相同访问权限但可以从Node.js使用的不同密码的用户/角色.
编辑:或者更好的是,根据这里的讨论,尝试编码连接字符串的密码部分.他们说它有效.因为我已经更改了密码,所以我没有费心去尝试.由于您仍然遇到此问题,因此在执行上述两个建议之一之前,您可能需要先尝试一下.
小智 13
在我的场景中,我正在与 docker 容器建立数据库连接,其中我使用了错误的 DB_HOST,并且我使用 docker 服务名称作为 DB_HOST,而不是 localhost。
修正DB_HOST后,这个问题就解决了。
错误的 .env 设置:
DB_HOST=postgres
正确的 .env 设置:
DB_HOST=localhost
And*_*at7 10
对您的密码进行编码。
const userPasswordDatabase = `${encodeURIComponent(database.dbPassword)}@`;
| 归档时间: | 
 | 
| 查看次数: | 14063 次 | 
| 最近记录: |