8

我最近在 Heroku 上放了一个 Django 应用程序。主页看起来不错,但是当我尝试转到涉及查询的页面(例如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 数据库。它认为您的数据库位于本地主机上。听起来你有一个 heroku postgres 数据库,所以你的主机应该是这样的:

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

Heroku 通过一个名为的环境变量公开一个特殊的数据库 URL:

DATABASE_URL

这里有一个非常酷的 python 包,名为 dj_database_url:https ://github.com/kennethreitz/dj-database-url它将环境变量转换为 django 所期望的。

你可以安装它:

$pip 安装 dj-database-url

我在我的 settings.py 中使用以下内容

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