【发布时间】:2013-01-04 23:44:48
【问题描述】:
我正在通过节点在 heroku 上运行 postgresql 数据库。我有我的服务器设置发布到“/提交”,它调用数据库控制器将数据插入数据库。一切都在本地成功运行,但是当我将其部署到 heroku 和 POST 时,我的 heroku 日志中出现以下错误。
2013-01-21T20:23:43+00:00 heroku[router]: at=info method=POST path=/submit host=[MYDOMAIN].herokuapp.com fwd=[IP] dyno=web.1 queue=0 wait=5ms connect=17ms service=35ms status=200 bytes=2
2013-01-21T20:23:46+00:00 app[web.1]: ^
2013-01-21T20:23:46+00:00 app[web.1]: node.js:201
2013-01-21T20:23:46+00:00 app[web.1]: throw e; // process.nextTick error, or 'error' event on first tick
2013-01-21T20:23:46+00:00 app[web.1]:
2013-01-21T20:23:46+00:00 app[web.1]: at Object.afterConnect [as oncomplete] (net.js:637:18)
2013-01-21T20:23:46+00:00 app[web.1]: Error: connect ECONNREFUSED
2013-01-21T20:23:46+00:00 app[web.1]: at errnoException (net.js:646:11)
2013-01-21T20:23:48+00:00 heroku[web.1]: Process exited with status 1
和应用程序中的 503。
这是相关的控制器代码(在 coffeescript 中)。
LOCAL_DB = "postgres://localhost:#{DBNAME}"
connect = ->
db = process.env.DATABASE_URL or LOCAL_DB
client = new pg.Client
client.connect()
client
insert = (options) ->
client = connect()
query = client.query "INSERT INTO #{TABLE} VALUES($1, $2, $3, $4);",
[options.uid, options.ls_pref, options.hp_pref, options.date]
query.on "error", onError
query.on "end", -> client.end()
我确实将我的数据库提升到了 DATABASE_URL:
$ heroku config | grep DATABASE_URL
> DATABASE_URL: postgres://[URL]
为什么我的连接被拒绝?
【问题讨论】:
-
如果我错了,这似乎是一个愚蠢的评论,但我相信 Heroku 也会在你的环境变量中存储一个 db 密码。当您尝试连接时,您是否正在使用它?
-
我在 heroku 文档中没有看到任何关于在连接之前必须进行身份验证的内容。有吗?
-
我不确定,我没有亲自使用过 Heroku 的 Postgres 插件。我建议在互联网上的某个地方找到一个示例(也许从 Heroku 的文档中获取一个示例),并且一旦您在其上构建了该示例即可获得所需的内容。
-
好的。这不是很有帮助,但我感谢你的帮助。我应该注意,我可以使用
heroku pg:psql在本地查询我的数据库。
标签: node.js postgresql heroku