Django Heroku postgres 连接错误

Django Heroku postgres connectivity error

我试图在 this guide with guidance from the Heroku docs 之后将一个基本的 Wagtail Django 站点 (pip install wagtail) 推送到 Heroku,但我遇到了一个非常常见的 postgres 连接错误(如下)。我可以从仪表板中看到 Heroku 正在提供实时数据库,我可以使用 heroku pq:psql 访问它。

项目 运行 在本地以及当我 运行 heroku local.

我的`project/app/settings/production.py'是按照推荐设置的:

import os

env = os.environ.copy()
SECRET_KEY = env['SECRET_KEY']

from __future__ import absolute_import, unicode_literals

from .base import *

DEBUG = False

try:
    from .local import *
except ImportError:
    pass

# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
print('check')
print(DATABASES)

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['*']

Procfile(在 repo 的根目录)

web: gunicorn myproj.wsgi:application --log-file -

myproj/wsgi.py

from __future__ import absolute_import, unicode_literals

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproj.settings.dev")

application = get_wsgi_application()

我得到的错误:

  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/app/.heroku/python/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

有人能帮忙吗?

您的 wsgi 文件指向您的开发设置;生产的根本没有被使用。

使用setdefault设置环境变量意味着如果已经设置,将优先使用现有值。所以你应该 运行 heroku config:set DJANGO_SETTINGS_MODULE=myproj.settings.production 来设置那个值。