OperationalError无法连接到服务器

时间:2013-07-14 02:43:24

标签: django heroku-postgres

我最近在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?

根据this answer,我做了$ heroku pg:promote HEROKU_POSTGRESQL_GREEN_URL

然后在我的settings.py中:

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

仍然遇到同样的错误,所以我尝试查看结果(如this answer建议的那样):

$ 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}

此时我意识到我不知道我应该在那里寻找什么。我仍然不明白错误的含义,所以我不确定如何调试它。

1 个答案:

答案 0 :(得分:2)

您尚未在settings.py中正确配置django数据库。它认为您的数据库在localhost上。听起来你有一个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 install dj-database-url

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

import dj_database_url
DATABASES = {
    'default': dj_database_url.config()
}
相关问题