Installation Postgis: le type "geometry" n'existe pas
J'essaie de créer une table avec Postgis. Je le fais par cette page . Mais quand j'importe postgis.fichier sql, je reçois beaucoup d'erreurs:
ERROR: type "geometry" does not exist
Est-ce que quelqu'un sait comment puis-je le réparer?
9 réponses
J'ai eu le même problème, mais il a été corrigé en exécutant le code suivant
CREATE EXTENSION postgis;
En détail,
- ouvrir pgAdmin
- sélectionnez (cliquez sur votre base de données
- cliquez sur L'icône" SQL " dans la barre
- exécutez le code" créer L'EXTENSION postgis; "
Pour obtenir psql pour s'arrêter sur la première erreur, utilisez -v ON_ERROR_STOP=1
(qui est désactivé par défaut, qui est pourquoi vous voyez beaucoup d'erreurs). Par exemple:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
L'erreur réelle est quelque chose comme "impossible de charger la bibliothèque X", qui peut varier en fonction de votre situation. Pour deviner, essayez cette commande avant d'installer le script sql:
ldconfig
(vous devrez peut-être préfixer avec sudo
en fonction de votre système). Cette commande met à jour les chemins d'accès à toutes les bibliothèques système, telles que GEOS.
Vous pouvez le faire à partir du terminal:
psql mydatabasename -c "CREATE EXTENSION postgis";
Si L'Extension Postgis est chargée, votre SQL ne trouve peut-être pas le type de géométrie en raison du chemin de recherche manquant vers le schéma public.
Essayez
Définir search_path=... publique;
Dans la première ligne de votre scscript. (remplacer ... avec les autres chemins de recherche requis)
, Vous devez activer l'extension sur votre base de données.
psql my_database -c "CREATE EXTENSION postgis;"
Les réponses ici peuvent résoudre votre problème, mais si postgis est déjà activé sur votre base de données, le problème peut être que vous essayez de restaurer une table postgis (avec une colonne de géométrie) dans un schéma autre que celui où votre extension postgis est activée. Dans pgAdmin, vous pouvez cliquer sur l'extension postgis et voir quel schéma est spécifié. Si vous essayez de restaurer un tableau avec une colonne de géométrie dans un schéma différent, vous pouvez obtenir cette erreur.
J'ai résolu cela en modifiant mon postgis extension - mais je ne suis pas sûr si c'était nécessairement la meilleure façon de le faire. Tout ce que je sais, c'est que cela m'a permis de restaurer la table.
Ou...
cursor.execute('create extension postgis')
Dans votre programme python, en utilisant un curseur Courant de psycopg2.
Assurez-vous D'abord d'avoir (correspondant à la version pg: psql-V) postgis installé:
sudo apt install postgis postgresql-9.6-postgis-2.3
Juste avant la création des tables ajouter:
db.engine.execute('create extension postgis')
db.create_all()
Vous devez également Vous assurer que l'utilisateur que vous essayez d'utiliser l'extension postgis, a accès au schéma où postgis est de configuration (qui dans les tutoriels, j'ai lu est appelé "postgis').
Je viens d'avoir cette erreur, et elle a été résolue parce que je n'avais donné qu'un nouvel accès utilisateur à la base de données. Dans la base de données que j'avais créée, j'ai couru:
grant all on schema postgis to USERNAME;
Et cela a résolu cette erreur