Изменение образа docker выдает: psycopg2.errors.UndefinedFile: не удалось получить доступ к файлу «$ libdir / postgis-3» ошибка

#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. Хорошо, спасибо за разъяснение, попробую опубликовать результаты!