Установка Postgis: тип "геометрия" не существует



Я пытаюсь создать таблицу с Postgis. Я делаю это с помощью этого страница. Но когда я импортирую postgis.sql-файл, я получаю много ошибок:



ERROR:  type "geometry" does not exist


кто-нибудь знает как я могу это исправить?

711   9  

9 ответов:

У меня была та же проблема, но она была исправлена путем запуска следующего кода

CREATE EXTENSION postgis;

подробно

  1. открыть pgAdmin
  2. выберите (нажмите) вашу базу данных
  3. нажмите кнопку" SQL " значок на панели
  4. запустите "создать расширение postgis;" code

чтобы остановить psql при первой ошибке, используйте -v ON_ERROR_STOP=1 (т. е. по умолчанию, именно поэтому вы видите много ошибок). Например:

psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql

фактическая ошибка-это что-то вроде "не удалось загрузить библиотеку X", который может варьироваться в зависимости от вашей ситуации. Как угадать, попробуйте эту команду перед установкой SQL-скрипт:

ldconfig

(возможно, Вам потребуется префикс с sudo в зависимости от вашей системы). Эта команда обновляет пути ко всем системным библиотекам, например Геос.

вы можете сделать это из терминала:

psql mydatabasename -c "CREATE EXTENSION postgis";

Если PostGIS-расширение загружено, то ваш SQL, возможно, не находит тип геометрии из-за отсутствия пути поиска к общедоступной схеме.

попробовать

SET search_path = ..., публика;

в первой строке вашего scsript. (заменять. .. с другими необходимыми поисковыми путями)

необходимо включить расширение в базе данных.

psql my_database -c "CREATE EXTENSION postgis;"

ответы здесь могут решить вашу проблему, однако если вы уже включили postgis в своей БД, проблема может заключаться в том, что вы пытаетесь восстановить таблицу postgis (со столбцом геометрии) в схему, отличную от того, где включено ваше расширение postgis. В pgAdmin вы можете нажать на расширение postgis и посмотреть, какая схема указана. Если вы пытаетесь восстановить таблицу со столбцом геометрии в другую схему, вы можете получить эту ошибку.

Я решил эту проблему, изменение моего расширения postgis-однако я не уверен, что это обязательно лучший способ сделать это. Все, что я знаю, это то, что это позволило мне восстановить таблицу.

или...

cursor.execute('create extension postgis')

в вашей программе python, используя текущий курсор из psycopg2.

сначала убедитесь ,что у вас есть (соответствует версии pg: psql-V) postgis установлен:

sudo apt install postgis postgresql-9.6-postgis-2.3

непосредственно перед созданием таблиц добавить:

db.engine.execute('create extension postgis') 
db.create_all()

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

У меня просто была эта ошибка, и она была решена, потому что я только дал новому пользователю доступ к базе данных. В базе данных, которую я создал, я побежал:

grant all on schema postgis to USERNAME; 

и это решило эту ошибку

Comments

    Ничего не найдено.