#django #postgresql #docker #postgis
#django #postgresql #docker #postgis
Вопрос:
Я запускаю настроенное приложение django с базой данных postgres, в которой установлен postgis. Для этого я использую официальный образ и создаю его с помощью docker-compose следующим образом:
postgres:
container_name: postgres_postgis
image: postgis/postgis
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres
Это сработало хорошо. Теперь я пытаюсь изменить это изображение с помощью официального изображения временной шкалы, на котором также установлен postgis (https://hub.docker.com/r/timescale/timescaledb-postgis /). Я меняю свой файл docker-compose следующим образом:
postgres:
container_name: postgres_postgis_timescale
image: timescale/timescaledb-postgis:latest-pg12
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres
Мое приложение отлично строится и работает нормально, но когда я пытаюсь получить доступ к данным, использующим postgis, я получаю эту ошибку:
django.db.utils.OperationalError: could not access file "$libdir/postgis-3": No such file or directory
Итак, я вошел в свою базу данных и попытался обновить расширение, ALTER EXTENSION postgis UPDATE;
но я получаю extension "postgis" has no update path from version "3.0.1" to version "2.5.3"
, так что, думаю, я в курсе.
Я совершенно уверен, что он связан с этим расширением, но понятия не имею, как я мог это исправить… Кто-нибудь может мне помочь?
Заранее большое спасибо!
РЕДАКТИРОВАТЬ: Что странного в том, что оба изображения имеют одинаковую версию расширения:
Name | Version | Schema | Description
------------------------ --------- ------------ ---------------------------------------------------------------------
fuzzystrmatch | 1.1 | public | determine similarities and distance between strings
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
postgis | 3.0.1 | public | PostGIS geometry, geography, and raster spatial types and functions
postgis_tiger_geocoder | 3.0.1 | tiger | PostGIS tiger geocoder and reverse geocoder
postgis_topology | 3.0.1 | topology | PostGIS topology spatial types and functions
Когда я возвращаюсь к старому изображению, оно снова работает….
Комментарии:
1. Вы проверили, что оба изображения имеют одинаковую версию Postgres? Возможно, что файлы данных, сохраняемые через
local_postgres_data:/var/lib/postgresql/data
volume, несовместимы. Попробуйте воссоздать файлы базы данных, используя новое изображение.2. Спасибо, джазгот! Я проверю версию postgres, спасибо за это. При воссоздании DB-файлов вы имеете в виду, что я должен удалить все, что у меня есть, и настроить создание его с нуля?
3. Я имею в виду попытку воссоздать тома docker, это можно сделать с помощью
docker-compose down -v
, а затемup
снова.4. Хорошо, спасибо за разъяснение, попробую опубликовать результаты!