Risposte:
Ho avuto lo stesso problema, ma è stato risolto eseguendo il codice seguente
CREATE EXTENSION postgis;
In dettaglio,
postgis
. Avevo bisogno di eseguire il seguente comando e tutto andava di nuovo bene:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
Puoi farlo dal terminale:
psql mydatabasename -c "CREATE EXTENSION postgis";
Per fare in modo che psql si fermi al primo errore, usa -v ON_ERROR_STOP=1
(che è disattivato per impostazione predefinita , motivo per cui vedi molti errori). Per esempio:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
L'errore effettivo è qualcosa come "Impossibile caricare la libreria X", che può variare a seconda della situazione. Come ipotesi, prova questo comando prima di installare lo script sql:
ldconfig
(potrebbe essere necessario aggiungere il prefisso a sudo
seconda del sistema). Questo comando aggiorna i percorsi a tutte le librerie di sistema, come GEOS.
Devi abilitare l'estensione sul tuo database.
psql my_database -c "CREATE EXTENSION postgis;"
Questo errore può verificarsi anche se si tenta di utilizzare i tipi di postgis su un altro schema anziché su public
.
Se stai creando il tuo schema, utilizzando postgis 2.3 o versioni successive e riscontri questo errore, procedi come segue :
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;
Quindi puoi procedere con l'uso delle funzionalità postgis.
Devi anche assicurarti che l'utente con cui stai tentando di utilizzare l'estensione postgis abbia accesso allo schema in cui è configurato postgis (che nei tutorial che ho letto è chiamato 'postgis').
Ho appena avuto questo errore ed è stato risolto perché avevo concesso solo a un nuovo utente l'accesso al database. Nel database che avevo creato, ho eseguito:
grant all on schema postgis to USERNAME;
E questo ha risolto questo errore
Le risposte qui potrebbero risolvere il tuo problema, tuttavia se hai già abilitato postgis sul tuo DB, il problema potrebbe essere che stai cercando di ripristinare una tabella postgis (con una colonna di geometria) in uno schema diverso da quello in cui è abilitata l'estensione postgis. In pgAdmin puoi fare clic sull'estensione postgis e vedere quale schema è specificato. Se stai tentando di ripristinare una tabella con una colonna della geometria in uno schema diverso, potresti ricevere questo errore.
Ho risolto questo problema modificando la mia estensione postgis, tuttavia non sono sicuro che fosse necessariamente il modo migliore per farlo. Tutto quello che so è che mi ha permesso di ripristinare la tabella.