最近我在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}
我当时意识到我甚至不知道该在什么地方查找。我仍然不理解这个错误的含义,因此我不确定应该如何进行调试。
print Photo.objects.all()
这样的代码时,我得到了相同的错误。 - snorthwayheroku config
命令时,您是否在配置变量列表中看到了DATABASE_URL
?此外,您不需要default=
部分;我认为它应该只是dj_database_url.config(os.environ['DATABASE_URL'])
。 - jacobianHOST
的值从localhost
更改为127.0.0.1
。 - DoNotArrestMe