我今天致力于将我的应用程序从本地环境迁移到Heroku。这是令人沮丧和有趣的同时,但现在我很困。
我有一个名为
DCPViews
我希望在运行查询时将数据库连接默认为我已经阅读了所有相关的教程/帖子/提示,以下是我的位置:
数据库层次结构
postgres (default system database)
-> DCP (app database)
-> DCP (base tables schema)
-> DCPViews (views layer schema)
设置.py
import django_heroku
import dj_database_url
...
DATABASES = {}
# DATABASE_URL = 'postgres://<user>:<pass>@<host>:<port>/<db_name>?currentSchema=<schema>'
DATABASE_URL = 'postgres://' + \
config('DB_USER') + ':' + \
config('DB_PASSWORD') + '@' + \
config('DB_HOST') + ':' + \
config('DB_PORT') + '/' + \
config('DB_NAME') + \
'?currentSchema=' + config('DB_SCHEMA_NAME')
DATABASES['default'] = dj_database_url.config(default=DATABASE_URL, ssl_require=True)
...
# Configure Django App for Heroku
django_heroku.settings(locals())
问题
我已经尽一切努力让Heroku使用正确的数据库URL(与
currentSchema
=
DCP视图
),但没有运气。我没有创建新角色的db权限,也没有为heroku的默认db用户设置搜索路径。它也不让我出口
DATABASE_URL
手动操作,似乎不接受我传入的值
settings.py
文件。这个
heroku config -s
命令总是返回相同的
数据库URL
价值。
在我当地的环境下一切都很好,但这是一个主要的障碍。我怎样才能让Heroku使用正确的
search_path
或默认为
DCP视图
运行查询时的架构?
更新
我将发送数据库凭据和
当前架构
我想用在我的
设置.py
但是heroku似乎忽略了它们,并在创建
DATABASES['default']
钥匙。下面是在浏览器中加载页面时的django调试:
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
'AUTOCOMMIT': True,
'CONN_MAX_AGE': 600,
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': '<host_name>',
'NAME': '<db_name>',
'OPTIONS': {'sslmode': 'require'},
'PASSWORD': '********************',
'PORT': 5432,
'TEST': {'CHARSET': None,
'COLLATION': None,
'MIRROR': None,
'NAME': None},
'TIME_ZONE': None,
'USER': '<user_name>'}}
DATABASE_URL
'postgres://<user>:<pass>@<host>:<port>/<db_name>?currentSchema=<schema>'