2013-04-25 92 views
1

我正在尝试使用Heroku和PostgreSQL数据库的node.js应用程序。PostgreSQL不能在Heroku上使用Node.js

我按照在Heroku文档教程: https://devcenter.heroku.com/articles/nodejs#using-a-postgres-database

依赖关系都不错,而且我的代码基本上是以下几点:

var pg = require('pg'); 

pg.connect(process.env.DATABASE_URL, function(err, client) { 
    var query = client.query('CREATE TABLE users (id bigint auto_increment not null, login varchar(250), constraint pk_users primary key (id))'); 

    query.on('row', function(row) { 
    console.log(JSON.stringify(row)); 
    }); 
}); 

我曾尝试过各种形式的这个查询的,像这样的:

var client = new pg.Client(process.env.DATABASE_URL); 
client.connect(); 

但我每次这个错误得到了我的Heroku日志:

at Object.afterConnect [as oncomplete] (net.js:875:19) 
Error: connect ECONNREFUSED 
at errnoException (net.js:884:11) 

如果有人已经遇到这种问题,欢迎任何帮助。 谢谢。

回答

2

我会建议尝试一个console.log(process.env.DATABASE_URL);,然后使用该地址手动连接使用本地计算机上的客户端。我知道Heroku数据库服务器是开放的远程连接(但我以前错了)。

如果不能获得heroku console并使用postgre客户端。

ECONNREFUSED是一个套接字错误,当您尝试连接到不可联系/可连接/正在监听的地址时弹出。

如果process.env.DATABASE_URL确实返回了正确和可连接的地址,那么我会做console.log(pg);以确保该对象是我期望的对象。

+0

真正的问题在于连接的确如此。我用下面的方法代替它:https://github.com/brianc/node-postgres/wiki/Client#constructor。它现在有效。谢谢 ! – Aerilys 2013-04-26 10:45:25