NodeJS 节点服务器无法连接到postgres数据库

csbfibhn  于 2023-01-12  发布在  Node.js
关注(0)|答案(3)|浏览(230)

我最近从MySQL切换到postgres作为node.js项目的数据库,虽然我可以从本地pgAdmin III访问远程postgres数据库。(OSX)客户端,到目前为止,我还不能通过node.js连接到我的数据库。我确信我为pgAdmin输入的凭据和我的node.js完全相同。我试着在数据库服务器的pg_hba.conf中将本地ipadress设置为trust而不是md5。我做错了什么吗?我最喜欢的搜索引擎找到了一些关于重置本地操作系统的令人担忧的结果。我刚刚使用了node-postgres的github repo文档中的示例:

var pg = require('pg');

var conString = "postgres://myusername:mypassword@hostname:5432/dbname";

var client = new pg.Client(conString);
client.connect(function(err) {
  if(err) {
    return console.error('could not connect to postgres', err);
  }
  client.query('SELECT NOW() AS "theTime"', function(err, result) {
    if(err) {
      return console.error('error running query', err);
    }
    console.log(result.rows[0].theTime);
    client.end();
  });
});

以下是我每次尝试启动服务器时得到的错误:

could not connect to postgres { [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

帮助将不胜感激

hk8txs48

hk8txs481#

看起来node-postgres不接受你的密码中的标签。删除标签后我可以连接没有问题。不会想到这一点,它没有给我留下任何印象,因为pgAdmin接受了它。
最好的解决方案是使用encodeURIComponent来编码你的密码字符串,这样就可以在URL中使用hashtags。

igetnqfo

igetnqfo2#

我在node.js中使用的接口可以在https://github.com/brianc/node-postgres中找到

var pg = require('pg');
var conString = "postgres://YourUserName:YourPassword@localhost:5432/YourDatabase";

尝试将pg://更改为postgres://
这是从另一个stackoverflow产品上刮取的:How to make connection to Postgres via Node.js

cl25kdpy

cl25kdpy3#

我设法解决了这个问题,删除了双引号和单引号的env_file在docker swarm中,在这种情况下,不同于docker compose,docker swarm解释的一切是写在“=”后的envs,例如,取代这:

ENV='production'

为此:

ENV=production

相关问题