【发布时间】:2013-07-12 05:53:05
【问题描述】:
我最近在 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}
此时我意识到我什至不知道我应该在其中寻找什么。我仍然不明白错误是什么意思,所以我不确定如何调试它。
【问题讨论】:
-
你能从shell查询数据库吗?比如导入模型然后运行 p = Photo.objects.get(title=title) ?
-
不,当我导入模型并运行
print Photo.objects.all()之类的东西时,我遇到了同样的错误。 -
当您运行
heroku config时,您是否在配置变量列表中看到DATABASE_URL?此外,您不应该需要default=部分;我认为应该只是dj_database_url.config(os.environ['DATABASE_URL']) -
@snorthway 尝试将
HOST的值从localhost更改为127.0.0.1