Ich versuche mit Postgis eine Tabelle zu erstellen. Ich mache es auf dieser Seite . Aber wenn ich die Datei postgis.sql importiere, erhalte ich viele Fehler:
ERROR: type "geometry" does not exist
Weiß jemand, wie ich das beheben kann?
postgresql
geometry
postgis
yetty
quelle
quelle
postgis
. Ich musste den folgenden Befehl ausführen, und alles war wieder inDO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
Wenn die Postgis-Erweiterung geladen ist, findet Ihr SQL den Geometrietyp möglicherweise nicht, da der Suchpfad zum öffentlichen Schema fehlt.
Versuchen
SET search_path = ..., public;
in der ersten Zeile Ihres Scsript. (Ersetzen Sie ... durch die anderen erforderlichen Suchpfade.)
quelle
Sie können es vom Terminal aus tun:
quelle
Um psql beim ersten Fehler zu stoppen, verwenden Sie
-v ON_ERROR_STOP=1
( standardmäßig deaktiviert , weshalb viele Fehler angezeigt werden). Beispielsweise: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:
(
sudo
Je nach System müssen Sie möglicherweise ein Präfix eingeben). Dieser Befehl aktualisiert die Pfade zu allen Systembibliotheken, z. B. GEOS.quelle
Sie müssen die Erweiterung in Ihrer Datenbank aktivieren.
psql my_database -c "CREATE EXTENSION postgis;"
quelle
Dieser Fehler kann auch auftreten, wenn Sie versuchen, Postgis-Typen in einem anderen Schema als zu verwenden
public
.Wenn Sie mit Postgis 2.3 oder höher ein eigenes Schema erstellen und auf diesen Fehler stoßen, gehen Sie wie folgt vor :
Anschließend können Sie die Postgis-Funktionen verwenden.
quelle
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:
Und das hat diesen Fehler behoben
quelle
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.
quelle
Oder...
Verwenden Sie in Ihrem Python-Programm einen aktuellen Cursor von psycopg2.
quelle
Stellen Sie zunächst sicher, dass Sie (passend zur pg-Version: psql -V) postgis installiert haben:
Fügen Sie kurz vor der Tabellenerstellung Folgendes hinzu:
quelle