Я пытаюсь создать таблицу с помощью Postgis. Я делаю это с помощью этой страницы . Но когда я импортирую файл postgis.sql, я получаю много ошибок:
ERROR: type "geometry" does not exist
Кто-нибудь знает, как это исправить?
Я пытаюсь создать таблицу с помощью Postgis. Я делаю это с помощью этой страницы . Но когда я импортирую файл postgis.sql, я получаю много ошибок:
ERROR: type "geometry" does not exist
Кто-нибудь знает, как это исправить?
У меня была такая же проблема, но она была исправлена путем выполнения следующего кода
CREATE EXTENSION postgis;
В деталях,
postgis
. Мне нужно было выполнить следующую команду, и все снова стало хорошо:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
Если Postgis-Extension загружен, то ваш SQL, возможно, не находит геометрический тип из-за отсутствия пути поиска к общедоступной схеме.
Пытаться
SET search_path = ..., общедоступный;
в первой строке вашего скрипта. (замените ... другими необходимыми путями поиска)
источник
Сделать это можно с терминала:
psql mydatabasename -c "CREATE EXTENSION postgis";
источник
Чтобы psql останавливался при первой ошибке, используйте
-v ON_ERROR_STOP=1
(который по умолчанию отключен , поэтому вы видите много ошибок). Например:Фактическая ошибка - это что-то вроде «не удалось загрузить библиотеку X», которая может варьироваться в зависимости от вашей ситуации. Предположительно попробуйте эту команду перед установкой sql-скрипта:
(вам может потребоваться префикс в
sudo
зависимости от вашей системы). Эта команда обновляет пути ко всем системным библиотекам, таким как GEOS.источник
Эта ошибка также может возникнуть, если вы попытаетесь использовать типы postgis в другой схеме, а не в
public
.Если вы создаете собственную схему с использованием postgis 2.3 или выше и сталкиваетесь с этой ошибкой, сделайте следующее, как указано здесь :
CREATE SCHEMA IF NOT EXISTS my_schema; CREATE extension postgis; UPDATE pg_extension SET extrelocatable = TRUE WHERE extname = 'postgis'; ALTER EXTENSION postgis SET SCHEMA my_schema; ALTER EXTENSION postgis UPDATE TO "2.5.2next"; ALTER EXTENSION postgis UPDATE TO "2.5.2"; SET search_path TO my_schema;
Затем вы можете перейти к использованию функций postgis.
источник
Вы должны включить расширение в своей базе данных.
psql my_database -c "CREATE EXTENSION postgis;"
источник
Вам также необходимо убедиться, что пользователь, в качестве которого вы пытаетесь использовать расширение postgis, имеет доступ к схеме, в которой устанавливается postgis (которая в прочитанных мною учебниках называется «postgis»).
У меня только что была эта ошибка, и она была решена, потому что я дал доступ к базе данных только новому пользователю. В созданной мной базе данных я запустил:
grant all on schema postgis to USERNAME;
И это решило эту ошибку
источник
Ответы здесь могут решить вашу проблему, однако, если у вас уже включен postgis в вашей БД, проблема может заключаться в том, что вы пытаетесь восстановить таблицу postgis (со столбцом геометрии) в схему, отличную от той, где включено ваше расширение postgis. В pgAdmin вы можете щелкнуть расширение postgis и посмотреть, какая схема указана. Если вы пытаетесь восстановить таблицу со столбцом геометрии в другую схему, вы можете получить эту ошибку.
Я решил эту проблему, изменив свое расширение postgis, однако я не уверен, что это лучший способ сделать это. Все, что я знаю, это то, что это позволило мне восстановить таблицу.
источник
Или...
cursor.execute('create extension postgis')
в вашей программе на Python, используя текущий курсор из psycopg2.
источник
Сначала убедитесь, что у вас установлен postgis (соответствует версии pg: psql -V):
sudo apt install postgis postgresql-9.6-postgis-2.3
Непосредственно перед созданием таблиц добавьте:
db.engine.execute('create extension postgis') db.create_all()
источник