Почему я не могу установить движок базы данных GeoDjango на 'django.contrib.gis.db.backends.postgis' на heroku?
У меня одна и та же проблема уже несколько дней, и, похоже, что независимо от того, что я делаю, я не могу установить движок базы данных на 'django.contrib.gis.db.backends.postgis'
на heroku. Эта проблема настолько затянула меня, что я наконец-то сделал свой первый пост на Stack Overflow.
Я вижу, что движок работает 'django.db.backends.postgresql_psycopg2'
когда я проверяю настройки базы данных в heroku:
% heroku run bash
~ $ python manage.py shell
>>> from django.conf import settings
>>> settings.DATABASES
{'default': {'NAME': [name], 'USER': [user], 'PASSWORD': [password],
'HOST': [host], 'PORT': 5432, 'CONN_MAX_AGE': 600, 'OPTIONS': {'sslmode': 'require'},
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'TIME_ZONE': None,
'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}}}
Я пришел к выводу, что проблема связана с тем, что я не понимаю, как heroku использует файл django settings.py
для настройки базы данных . Например, я думаю, не делаю ли я все в неправильном порядке. Первоначально я настроил базу данных heroku с помощью следующих команд, а затем после этого разместил свой проект geodjango на Heroku.
% heroku addons:create heroku-postgresql:hobby-dev
% heroku pg:psql
app::DATABASE=> create extension postgis;
Я также пробовал полностью удалить базу данных, а затем перенести свой код на Heroku, потому что я думал, что heroku автоматически создаст базу данных после чтения файла settings.py
, но этого не произошло.
Дополнительная информация:
Я считаю, что мои heroku builpacks настроены правильно и не думаю, что проблема в этом:
1. https://github.com/heroku/heroku-geo-buildpack.git
2. heroku/python
Переменная DATABASES
в моем settings.py
файле следует рекомендациям многих тем Stack Overflow, уже написанных по этой проблеме, как показано ниже. Я установил с помощью pip dj_database_url и добавил его в мой requirements.txt
. Мне кажется, я вспоминаю, что где-то читал, что django создает базу данных с первого упоминания переменной DATABASES
, поэтому он не будет читать последнюю строку, где я переустановил движок на 'django.contrib.gis.db.backends.postgis'
. Может быть, в этом проблема?
DATABASES = {}
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
Мой самый насущный вопрос: как установить движок базы данных в heroku 'django.contrib.gis.db.backends.postgis'
? Я также хочу понять, как heroku использует файл django settings.py для настройки приложения?
Большое спасибо!