8

最近、Django アプリを Heroku に配置しました。ホームページは問題ないように見えますが、クエリの作成を伴うページ (例: p = Photo.objects.get(title=title)) に移動しようとすると、次のエラーが発生します。

could not connect to server: Connection refused
    Is the server running on host "localhost" and accepting
    TCP/IP connections on port 5432?

この答えに従って、私はやった$ heroku pg:promote HEROKU_POSTGRESQL_GREEN_URL

次に、私のsettings.pyで:

DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}

それでも同じエラーが発生したので、この結果を調べてみました(この回答が示唆するように):

$ heroku run python manage.py shell

>>> from django.conf import settings

>>> print settings.DATABASES['default']

{'TIME_ZONE': 'UTC', 'TEST_MIRROR': None, 'NAME': 'snorthway', 'OPTIONS': {}, 
'HOST': 'localhost', 'TEST_NAME': None, 'PASSWORD': '******', 'ENGINE': 
'django.db.backends.postgresql_psycopg2', 'PORT': '', 'USER': 'snorthway', 
'TEST_COLLATION': None, 'TEST_CHARSET': None}

その時点で、その中で何を探すべきなのかさえわからないことに気づきました。エラーの意味がまだわからないので、デバッグ方法がわかりません。

4

1 に答える 1

3

settings.py で django データベースを正しく構成していません。データベースが localhost にあると見なされます。heroku postgres データベースがあるように聞こえるので、ホストは次のようになります。

df3-64-304-50-250.compute-1.amazonaws.com

Heroku は、次の環境変数を通じて特別なデータベース URL を公開します。

DATABASE_URL

ここには dj_database_url と呼ばれる非常にクールな python パッケージがあります: https://github.com/kennethreitz/dj-database-urlは、その環境変数を django が期待するものに変換します。

次の方法でインストールできます。

$pip install dj-データベース-url

私のsettings.pyで以下を使用します

import dj_database_url
DATABASES = {
    'default': dj_database_url.config()
}
于 2014-08-07T06:41:51.877 に答える