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
来设置那个值。
我试图在 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
来设置那个值。