Ошибка при восстановлении базы данных PostGIS: «геометрия типа не существует» - PullRequest
0 голосов
/ 20 декабря 2018

Таким образом, мой коллега покидает нашу компанию, и он использовал 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, все работает ... Но когда pg_restore создает таблицу со столбцом Geometry, все происходит так, как если бырасширение PostGIS никогда не существовало.

Есть ли у вас проблемы такого рода?

Ответы [ 2 ]

0 голосов
/ 04 января 2019

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

SELECT PostGIS_full_version();

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

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

CREATE EXTENSION postgis;
0 голосов
/ 24 декабря 2018

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

...