Как задать пути поиска для базы данных Heroku PostgreSQL?

В настоящее время я разворачиваю приложение Django на Heroku, и мой settings.py выглядит следующим образом:

if IS_HEROKU_APP:
    DATABASE_URL = dj_database_url.config(
        env="DATABASE_URL",
        conn_max_age=600,
        conn_health_checks=True,
        ssl_require=True,
    )
else:
    DATABASE_URL = {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': config('DATABASE_NAME'),
        'USER': config('DATABASE_USER'),
        'PASSWORD': config('DATABASE_PASSWORD'),
        'HOST': config('DATABASE_HOST'),
        'PORT': config('DATABASE_PORT'),
    }

DATABASES = {
    'default': {
        **DATABASE_URL,
        'OPTIONS': {
            'options': '-c search_path=public'
        },
    },
    'modules': {
        **DATABASE_URL,
        'OPTIONS': {
            'options': '-c search_path=modules'
        },
    },
    'alumni': {
        **DATABASE_URL,
        'OPTIONS': {
            'options': '-c search_path=alumni'
        },
    }
}

DATABASE_ROUTERS = ['MCMT.db_routers.ModulesRouter', 'MCMT.db_routers.AlumniRouter', 'MCMT.db_routers.DefaultRouter']

Это работает локально, но не работает, когда я продвигаюсь на Heroku (в частности, на этапе выпуска, когда мне нужно мигрировать). Я получаю ошибку:

django.db.utils.ProgrammingError: relation "info" does not exist
remote: LINE 1: SELECT "info"."code" FROM "info"

, что объясняется отсутствием таблицы «info», а только «modules.info». Я думаю, это происходит потому, что Heroku не видит параметры search_path. Как мне решить эту проблему?

Я пытался сначала создать схемы, используя heroku pg:psql, но это дает ту же ошибку. Я также пытался выяснить, не является ли это проблемой dj_database_url, но не смог найти никакого решения в Интернете.

Вернуться на верх