1

ノードを介して、herokuでpostgresqlデータベースを実行しています。サーバーを「/submit」に投稿するように設定しました。これにより、データベースコントローラーが呼び出され、データベースにデータが挿入されます。すべてがローカルで正常に機能しますが、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]

接続が拒否されるのはなぜですか?

4

1 に答える 1

3

クライアントを作成するときにデータベース文字列を渡していないことがわかりました。

# Yes
db = process.env.DATABASE_URL or LOCAL_DB
client = new pg.Client db
client.connect()

# No
db = process.env.DATABASE_URL or LOCAL_DB
client = new pg.Client
client.connect db

このかなり明白な見落としにもかかわらず、ローカルデータベースは機能していました。あなたは警告されました!

于 2013-01-22T00:46:02.130 に答える