Ошибка при восстановлении базы данных PostGIS: геометрия типа не существует

Мой коллега покидает нашу компанию и использовал pg_dump (косвенно, через pgAdmin III) для сброса своей локальной базы данных. Он поместил файл .backup на сервер компании, и теперь я использую pg_restor (косвенно, через pgAdmin III) для восстановления его таблиц в базе данных компании.

Но я заметил, что были восстановлены только таблицы без геометрии.

Присмотревшись к журналам, я заметил, что ошибка была следующей (извините за французский язык):

pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  le type « geometry » n'existe pas
LIGNE 3 :     geom geometry(Point,5699),
                   ^
    La commande était : CREATE TABLE cbt_poste (
    id integer NOT NULL,
    geom geometry(Point,5699),
    nom_du_pos character varying(32),
    d...

По сути, он утверждает, что типа Geometry не существует. Но когда я создаю таблицу со столбцом Geometry в любой схеме базы данных, она работает успешно.

Итак, моя проблема по сути:

Когда я создаю таблицу со столбцом Geometry, все работает ... Но когда pg_restore создает таблицу со столбцом Geometry, все происходит так, как будто расширения PostGIS никогда не существовало.

Есть ли опыт в подобной проблеме?


person R. Bourgeon    schedule 20.12.2018    source источник
comment
Это может быть search_path проблема - вы использовали ту же версию pg_restore, что и для pg_dump? Некоторое время назад были исправлены search_path ошибки, изменившие поведение в этой области.   -  person Laurenz Albe    schedule 20.12.2018


Ответы (2)


Могу предположить, что в базе данных, из которой вы пытаетесь восстановить дамп, не установлено расширение PostGIS. Вот почему не распознаются пространственные типы данных (в частности, геометрия). Вы можете попробовать установить PostGIS и повторить pg_restore.

person Community    schedule 24.12.2018

Посмотрите, установлен ли у вас postgis, напишите это в psql:

SELECT PostGIS_full_version();

если он не установлен, вы можете установить его, следуя инструкциям в инструкциях по установке postgis

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

CREATE EXTENSION postgis;
person Bruno Carballo    schedule 04.01.2019