Django 赫罗库罐头上的德扬戈';t连接到具有不同模式的Postgres

Django 赫罗库罐头上的德扬戈';t连接到具有不同模式的Postgres,django,postgresql,heroku,schema,Django,Postgresql,Heroku,Schema,我今天致力于将我的应用程序从本地环境迁移到Heroku。这是令人沮丧的,同时也很有趣,但现在我被卡住了 我有一个名为DCPViews的模式,我希望数据库连接在运行查询时默认使用该模式。我已经阅读了所有相关的教程/帖子/提示,现在我在这里: 数据库层次结构 postgres (default system database) -> DCP (app database) -> DCP (base tables schema) -> DCPViews (vi

我今天致力于将我的应用程序从本地环境迁移到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.com
中转到heroku应用程序,然后转到连接到应用程序的数据库。然后转到设置并单击显示配置变量。将您的
数据库URL
更改为您需要的任何内容(请注意,它可能只是实际heroku postgres数据库URL的扩展)

好吧,我走的是正确的道路。我在角色中添加了
search\u路径
,这就成功了:

ALTER ROLE <role_name> SET search_path = <go, pirates>
ALTER角色集搜索路径=

谢谢你的提示。我试过了,但它不允许我更改
数据库的URL
值。Heroku文档说它会定期更新
数据库的URL
值,所以我每次都要更改它。啊,是的,没错。它会更新,所以你不能这样做。你现在的计划是免费的吗?是的,是免费的。啊,好的。如果升级到第一层解决了您的问题,那将是非常理想的。我正在用django/postgres运行一个多租户应用程序,它非常便宜。编辑:升级以利用数据库搜索路径。@OhGreatOne您的答案看起来很合理。请告诉我们运行Multitenance con Heroku的正确设置好吗?我不能那样做。我收到一条消息:“AttributeError:'DatabaseWrapper'对象在运行migrate_schemas--shared时没有属性'set_schema'。我非常感谢你的帮助。
ALTER ROLE <role_name> SET search_path = <go, pirates>