Ошибка при восстановлении базы данных 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 никогда не существовало.

Есть опыт такого рода вопросов?

2 ответа

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

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

SELECT PostGIS_full_version();

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

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

CREATE EXTENSION postgis;
Другие вопросы по тегам