我正在尝试使用Heroku和PostgreSQL数据库处理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)
如果有人遇到过这种问题,欢迎任何帮助。 谢谢。
答案 0 :(得分:2)
我建议尝试console.log(process.env.DATABASE_URL);
,然后使用该地址在本地计算机上使用客户端手动连接。我知道Heroku数据库服务器是开放的远程连接(但我以前错了)。
如果没有,你可以获得heroku console
并使用postgre客户端。
ECONNREFUSED是当您尝试连接到不可联系/可连接/侦听的地址时弹出的套接字错误。
如果process.env.DATABASE_URL
确实返回了正确且可连接的地址,那么我将会console.log(pg);
来确保该对象符合我的期望。