Aktualisieren Sie die Datenbank von PostgreSQL 8.3.8 + PostGIS 1.3.5 auf PostgreSQL 10.1 + PostGIS 2.4

316
nevrome

Ich habe einen alten Server (Ubuntu 12.04.5) mit einer Datenbank geerbt, die unter PostgreSQL 8.3.8 mit der PostGIS 1.3.5-Erweiterung ausgeführt wird. Dieser Server wird durch einen neuen Server (4.14.12-1-ARCH) ersetzt, auf dem ich Docker zum Trennen verschiedener PostgreSQL-Instanzen verwende. Für einen ersten Testlauf habe ich das mdillon / postgis: latest image verwendet, um das neue Setup zu erstellen. Das sollte zu PostgreSQL 10.1 + PostGIS 2.4 führen.

Wenn ich versuche, einen Speicherauszug der alten Datenbank auf dem neuen Server wiederherzustellen, erhalte ich eine Reihe von Fehlern wie die folgenden:

... 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 ); ... 

Die alte Datenbank benötigt Bibliotheken, die mit der neuen Postgres-Postgis-Version nicht mehr verfügbar sind. Was ist der beste Weg, um damit umzugehen?

Da ich Docker verwende, könnte ich vielleicht einfach einen Container mit der alten Software erstellen und ihn laufen lassen, ohne die Datenbank zu berühren. Die Datenbank wird nur intern verwendet: Hier kein Sicherheitsproblem. Andererseits möchte ich die neuen Postgres-Postgis-Versionen nutzen, um besser auf die Zukunft vorbereitet zu sein. Aber ist es realistisch möglich, ein Update der Datenbank und ihrer Funktionen durchzuführen?

Was ist der beste Weg, um damit umzugehen?

1
Haben Sie dies gelesen: http://www.bostongis.com/blog/index.php?/archives/187-How-to-upgrade-your-database-to-PostGIS-2.0-let-me-count-the- ways.html? Gerard H. Pille vor 6 Jahren 0
@ GerardH.Pille Danke für diesen Link und entschuldige mein langes Schweigen. Ich beschloss, dem einfachen Pfad zu folgen und mit dem [Docker-Container] (https://hub.docker.com/r/nevrome/docker_postgres838_postgis135/) vorerst zu gehen. nevrome vor 6 Jahren 0
Ich habe gerade ein paar Tage versucht, auf ein MySQL in einem Docker zuzugreifen. Der "leichte Weg" mag etwas euphemistisch sein. ;-) Gerard H. Pille vor 6 Jahren 0

0 Antworten auf die Frage