使用node-orm(在osx 10.6.8下)将node.js应用程序连接到PostgreSQL的问题
我想在osx(10.6.8)下运行一个小的nodejs应用程序,并连接到我的localhost Postgres数据库。 我正在使用node-orm(https://github.com/dresende/node-orm2)以及Postgres绑定(https://github.com/brianc/node-postgres)。
出于某种原因,当我使用orm.connect
并将它作为string连接url时,它将失败:
Error: getaddrinfo ENOENT at errnoException (dns.js:31:11) at Object.onanswer [as oncomplete] (dns.js:123:16)
如果我用127.0.0.1更改本地主机。 它也死于超时exception。
使用vanilla postgress绑定连接到数据库,使用相同的连接string是成功的,我甚至设法得到一些testing查询运行,得到的结果等。
我尝试使用vanilla postgress API手动设置数据库客户端,并使用orm.use
将其传递给orm。 这pipe理成功连接到数据库,但每次我尝试执行一个查询,没有任何反应。 它不会产生一个错误,但sinply卡住了QueryQueue,并没有调用成功的callback。 我检查了数据库日志,似乎也没有检测到查询。
我该怎么办? 我有一点困惑
我在飞机上遇到了这个问题。 当我没有连接到networking时,我只收到Error: getaddrinfo ENOENT
,即使我在本地运行数据库服务器。 这是我做了什么来解决它:
而不是使用localhost
,请使用127.0.0.1
。
所以你的连接string将从
postgresql://user:pass@localhost:5432/db_name
至
postgresql://user:pass@127.0.0.1:5432/db_name
不能从问题中弄出真正的问题。看起来像连接string是错误的。 但是,这是一个代码块,它与https://github.com/brianc/node-postgres一起工作
`
var application_root = __dirname, pg = require('pg'); // database var conString = "postgres://username:password@172.28.6.250:5432/db_name"; function processReqResSql(req, res, sql) { pg.connect(conString, function (err, client) { if (err) { res.writeHead(404, { 'Content-Type': 'application/json' }); res.write('{couldnt connect to db}'); } else { var query = client.query(sql); / var dbResponse =""; query.on('row', function(row) { console.log(row); dbResponse = dbResponse+JSON.stringify(row); }); query.on('end', function() { client.end(); res.writeHead(200, {"Content-Type": "application/json"}); res.write("{ results:{"+dbResponse+"}"); res.end(); }); }
检查你的postgre服务器是否已经启动。 你可以通过下面的命令启动它:
pg_ctl -D <db-name> -l logfile start