Как задать пути поиска для базы данных 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, но не смог найти никакого решения в Интернете.