我正在努力在heroku上部署我的应用程序。主要是由于数据库配置。
这是settings.py文件的底部,
import dj_database_url
DATABASES = { 'default': dj_database_url.config() }
try:
from .local_settings import *
except ImportError:
pass
这是我的local_settings.py文件,
导入操作系统 BASE_DIR = os.path.dirname(os.path.dirname( file ))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'postgres',
'HOST': 'localhost',
'PORT': 5432,
}
}
我可以成功运行heroku local web
。
但是当我跑,heroku run python manage.py migrate
时,它给了我错误,
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
当我跑步时,heroku run python manage.py shell
,
然后运行
>>> import dj_database_url
>>> dj_database_url.config()
我收到字典,向我提供有关数据库的完整信息。
问题出在哪里?
答案 0 :(得分:2)
不应部署local_settings文件。它仅供本地使用,因此得名。你应该把它从你的git repo中排除。
答案 1 :(得分:1)
首先尝试从local_settings.py
导入设置,然后更改DATABASES
设置
import dj_database_url
try:
from .local_settings import *
except ImportError:
pass
DATABASES = { 'default': dj_database_url.config() }
您已在文件中定义了DATABASES
变量,但在导入local_settings.py
时,您的DATABASES
配置会被开发值覆盖。您应首先进行导入,然后更改DATABASES
选项。
就个人而言,我建议您应保留base_settings.py
以包含除数据库以外的所有设置,然后将其导入heroku_settings.py
,而不是导入整个local_settings
}。
保留base_settings
,development_settings
,heroku_settings
(或production_settings)可以更轻松地处理部署。