Antworten:
Ich hatte das gleiche Problem, aber es wurde behoben, indem der folgende Code ausgeführt wurde
CREATE EXTENSION postgis;
Im Detail,
postgis
. Ich musste den folgenden Befehl ausführen, und alles war wieder in DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
Sie können es vom Terminal aus tun:
psql mydatabasename -c "CREATE EXTENSION postgis";
Um psql beim ersten Fehler zu stoppen, verwenden Sie -v ON_ERROR_STOP=1
( standardmäßig deaktiviert , weshalb viele Fehler angezeigt werden). Beispielsweise:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
Der eigentliche Fehler ist so etwas wie "Bibliothek X konnte nicht geladen werden", was je nach Situation variieren kann. Versuchen Sie diesen Befehl, bevor Sie das SQL-Skript installieren:
ldconfig
( sudo
Je nach System müssen Sie möglicherweise ein Präfix eingeben). Dieser Befehl aktualisiert die Pfade zu allen Systembibliotheken, z. B. GEOS.
Sie müssen die Erweiterung in Ihrer Datenbank aktivieren.
psql my_database -c "CREATE EXTENSION postgis;"
Dieser Fehler kann auch auftreten, wenn Sie versuchen, Postgis-Typen in einem anderen Schema als zu verwendenpublic
.
Wenn Sie mit Postgis 2.3 oder höher ein eigenes Schema erstellen und auf diesen Fehler stoßen, gehen Sie wie folgt vor :
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;
Anschließend können Sie die Postgis-Funktionen verwenden.
Sie müssen auch sicherstellen, dass der Benutzer, für den Sie die Postgis-Erweiterung verwenden möchten, Zugriff auf das Schema hat, in dem Postgis eingerichtet ist (das in den von mir gelesenen Tutorials als "Postgis" bezeichnet wird).
Ich hatte gerade diesen Fehler und er wurde behoben, weil ich nur einem neuen Benutzer Zugriff auf die Datenbank gewährt hatte. In der Datenbank, die ich erstellt hatte, lief ich:
grant all on schema postgis to USERNAME;
Und das hat diesen Fehler behoben
Die Antworten hier können Ihr Problem lösen. Wenn Sie jedoch bereits Postgis in Ihrer Datenbank aktiviert haben, besteht das Problem möglicherweise darin, dass Sie versuchen, eine Postgis-Tabelle (mit einer Geometriespalte) in einem anderen Schema als dem, in dem Ihre Postgis-Erweiterung aktiviert ist, wiederherzustellen. In pgAdmin können Sie auf die Postgis-Erweiterung klicken und sehen, welches Schema angegeben ist. Wenn Sie versuchen, eine Tabelle mit einer Geometriespalte in einem anderen Schema wiederherzustellen, wird möglicherweise dieser Fehler angezeigt.
Ich habe dieses Problem behoben, indem ich meine Postgis-Erweiterung geändert habe. Ich bin mir jedoch nicht sicher, ob dies unbedingt der beste Weg war. Ich weiß nur, dass ich damit die Tabelle wiederherstellen konnte.