Обновление базы данных с PostgreSQL 8.3.8 + PostGIS 1.3.5 до PostgreSQL 10.1 + PostGIS 2.4

225
nevrome

Я унаследовал старый сервер (Ubuntu 12.04.5) с базой данных, работающей на PostgreSQL 8.3.8 с расширением PostGIS 1.3.5. Этот сервер будет заменен новым сервером (4.14.12-1-ARCH), где я использую docker для разделения разных экземпляров PostgreSQL. Для первого теста я использовал образ mdillon / postgis: latest для создания новой настройки. Это должно привести к PostgreSQL 10.1 + PostGIS 2.4.

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

... pg_restore: creating FUNCTION "public.st_box2d_in(cstring)" pg_restore: [archiver (db)] Error while PROCESSING TOC: pg_restore: [archiver (db)] Error from TOC entry 626; 1255 1052513 FUNCTION st_box2d_in(cstring) postgres pg_restore: [archiver (db)] could not execute query: ERROR: could not access file "/usr/lib/postgresql/8.3/lib/liblwgeom": No such file or directory Command was: CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d LANGUAGE c IMMUTABLE STRICT AS '/usr/lib/postgresql/8.3/lib/liblwgeom', 'BOX2DFLOAT4_in'; pg_restore: creating FUNCTION "public.st_box2d_out(box2d)" pg_restore: [archiver (db)] Error from TOC entry 628; 1255 1052515 FUNCTION st_box2d_out(box2d) postgres pg_restore: [archiver (db)] could not execute query: ERROR: could not access file "/usr/lib/postgresql/8.3/lib/liblwgeom": No such file or directory Command was: CREATE FUNCTION st_box2d_out(box2d) RETURNS cstring LANGUAGE c IMMUTABLE STRICT AS '/usr/lib/postgresql/8.3/lib/liblwgeom', 'BOX2DFLOAT4_out'; pg_restore: creating TYPE "public.box2d" pg_restore: [archiver (db)] Error from TOC entry 2331; 1247 1052511 TYPE box2d postgres pg_restore: [archiver (db)] could not execute query: ERROR: function st_box2d_in(cstring) does not exist Command was: CREATE TYPE box2d ( INTERNALLENGTH = 16, INPUT = st_box2d_in, OUTPUT = st_box2d_out, ALIGNMENT = int4, STORAGE = plain ); ... 

Для старой базы данных нужны библиотеки, которые больше не доступны в новой версии Postgres-Postgis. Какой лучший способ справиться с этим?

Поскольку я использую Docker, я мог бы просто создать контейнер со старым программным обеспечением и продолжать его работу, не касаясь базы данных. База данных используется только для внутреннего использования: здесь нет проблем с безопасностью. С другой стороны, я хотел бы использовать новые версии Postgres-Postgis, чтобы лучше подготовиться к будущему. Но реально ли выполнить обновление базы данных и ее функций?

Какой лучший способ справиться с этим?

1
Читали ли вы это: http://www.bostongis.com/blog/index.php?/archives/187-How-to-upgrade-your-database-to-PostGIS-2.0-let-me-count-the- way.html? Gerard H. Pille 6 лет назад 0
@ GerardH.Pille Спасибо за эту ссылку и извините за долгое молчание. Я решил пойти по простому пути и пока использовать [контейнер докера] (https://hub.docker.com/r/nevrome/docker_postgres838_postgis135/). nevrome 6 лет назад 0
Я просто потратил пару дней, пытаясь получить доступ к mysql внутри докера. «Легкий путь» может быть слегка эвфемистическим. ;-) Gerard H. Pille 6 лет назад 0

0 ответов на вопрос

Похожие вопросы