节点服务器无法连接到postgres db

时间:2014-02-12 21:53:47

标签: node.js postgresql node-postgres

我最近从MySQL切换到postgres作为node.js项目的数据库。虽然我能够从我的本地pgAdmin III(OSX)客户端访问我的远程postgres数据库,但到目前为止我一直无法通过node.js连接到我的数据库。我确信我为pgAdmin和我的node.js输入的凭据完全相同。我尝试过的另一件事是在我的数据库服务器的pg_hba.conf中设置我的本地ipadress而不是md5。有什么我做错了吗?我最喜欢的搜索引擎提出了一些关于重置我的本地操作系统的令人担忧的命中。我刚刚使用了node-postgres的github repo doc中的例子:

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' }

非常感谢帮助

2 个答案:

答案 0 :(得分:21)

node-postgres似乎不接受密码中的主题标签。删除主题标签后,我能够毫无问题地连接。不会想到这一点,因为pgAdmin接受了它,所以它不会让我成为一个问题。

答案 1 :(得分:0)

我使用的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

相关问题