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