首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-postgres get错误connect ECONNREFUSED

node-postgres get错误connect ECONNREFUSED
EN

Stack Overflow用户
提问于 2015-04-18 10:28:59
回答 2查看 20.7K关注 0票数 6

我想使用node-posgres将我的应用程序nodejs连接到PostgreSQL。我的应用程序在本地主机上(ubuntu),我的postgresql在云中的虚拟机上,操作系统是OpenSuse。这是我的代码:

代码语言:javascript
复制
var express = require('express');
var app = express();


var http = require('http');
var pg = require('pg');

var conString = "postgres://postgres:mypassword@myurl.com:5432/postgres";


app.get('/', function (req, res) {
    res.send('HOLAAAA');
});

// respond with "SERVER" on the homepage
app.get('/server', function (req, res) {

    var client = new pg.Client(conString);
    client.connect(function (err) {
        if (err) {
            return console.error('could not connect to postgres', err);
        }
        console.log('CONNECT PASSED');
        client.query('SELECT * FROM visit', function (err, result) {
            if (err) {
                return console.error('error running query', err);
            }
            console.log('QUERY PASSED');
            console.log(result.rows[0].theTime);
            //output: Tue Jan 15 2013 19:12:47 GMT-600 (CST)
            client.end();
        });
    });

});


var server = app.listen(3000, function () {

    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port);

});

但是我得到了一个类似这样的错误:

代码语言:javascript
复制
could not connect to postgres { [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

请帮我解决这个问题。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-03-22 17:25:46

@Madhavan Kumar非常感谢您的帮助

解决此问题的步骤如下:

在远程服务器上:

1-查找配置文件位置的find \ -name "postgresql.conf"

2-用于编辑配置文件的sudo nano /path/to/config/postgresql.conf

3-将此#listen_addresses = 'localhost'更改为此listen_addresses = '*',然后保存并退出

4-查找hba配置文件的find \ -name "pg_hba.conf"

5-用于编辑sudo nano /path/to/config/pg_hba.conf配置文件的hba

6-添加host all all 0.0.0.0/0 md5 host all all ::/0 md5

在文件末尾,然后保存并退出

7-运行/etc/init.d/postgresql restart重新启动postgres

在代码连接中,如下所示:

代码语言:javascript
复制
let sequelize = new Sequelize(
  config.db.name,
  config.db.username,
  config.db.password,
  {
    host: config.ip,
    port: config.port,
    dialect : 'postgres'
  }
)
票数 6
EN

Stack Overflow用户

发布于 2015-04-19 14:22:04

首先尝试从本地端执行简单的psql命令,

代码语言:javascript
复制
psql -d DBNAME -h YOUR_IP -U USERNAME

它可能对你不起作用。这可能是由于两个原因:您的本地工作站无法解析VM的ip。(或)公共云中的虚拟机,如amazon (或)您的桌面。如果它在公共组中,则VM上的端口5432不对公共世界开放。您需要编写一个安全组来执行此操作。

如果你确定这不是上面两个问题中的任何一个,最好访问postgres /etc/postgresql/9.3/main/pg_hba.conf,看看是否启用了远程连接。NodeJs app,最后一定要测试一下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29712228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档