Как добавить расширение Postgres при размещении локальной базы данных на Heroku

У меня есть приложение Django, которое полагается на расширение postgis Postgres.

Я хочу скопировать мою локальную базу данных на Heroku с помощью pg:push, но получаю многочисленные django.db.utils.ProgrammingError: relation does not exist ошибки, следующие из:

pg_restore: error: could not execute query: ERROR:  type "public.geography" does not exist
LINE 6:     coords public.geography(Point,4326),
                   ^
Command was: CREATE TABLE public.outreach_localcompanylocation (
    id bigint NOT NULL,
    long_name character varying(200) NOT NULL,
    city character varying(200) NOT NULL,
    country character varying(3) NOT NULL,
    coords public.geography(Point,4326),
    google_location_id bigint,
    state character varying(200)
);

Похоже, это происходит потому, что pg:push не включает расширение postgis (обычно включается при выполнении SQL-команды CREATE EXTENSION postgis;).

Если я пытаюсь включить его вручную на новой базе данных Heroku, а затем запускаю pg:push, я получаю эту ошибку:

Remote database is not empty. Please create a new database or use heroku pg:reset

Так есть ли способ запустить CREATE EXTENSION postgis; как часть процесса pg:push?

В документации указано, что вы не можете нажать на непустую базу данных:

...Чтобы предотвратить случайную перезапись и потерю данных, удаленная база данных должна быть пустой. Вам будет предложено pg:сбросить удаленную базу данных, которая не является пустой...

https://devcenter.heroku.com/articles/managing-heroku-postgres-using-cli#pg-push

Кроме того, делаете ли вы миграции? Тот факт, что django выплевывает ошибки отношений, заставляет меня думать, что он склоняется в эту сторону.

  1. Удалите файлы в папке migrations вашего локального приложения, оставьте там файл __init__.py.

  2. Запустите python manage.py makemigrations

    .
  3. Бег python manage.py migrate

  4. Перезагрузите базу данных heroku, чтобы она была пуста и готова к продвижению.

  5. Разверните приложение с обновленными миграциями в heroku.

  6. Запустите heroku run python manage.py migrate

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