117 votes

Installation de Postgis : le type "geometry" n'existe pas

J'essaie de créer un tableau avec Postgis. Je le fais de la manière suivante page . Mais lorsque j'importe le fichier postgis.sql, j'obtiens beaucoup d'erreurs :

ERROR:  type "geometry" does not exist

Quelqu'un sait-il comment le réparer ?

8voto

Baptiste Donaux Points 990

Vous devez activer l'extension sur votre base de données.

psql my_database -c "CREATE EXTENSION postgis;"

4voto

mozboz Points 533

Vous devez également vous assurer que l'utilisateur que vous essayez d'utiliser l'extension postgis a accès au schéma dans lequel postgis est configuré (qui, dans les tutoriels que j'ai lus, est appelé "postgis").

Je viens d'avoir cette erreur, et elle a été résolue parce que j'avais seulement donné à un nouvel utilisateur l'accès à la base de données. Dans la base de données que j'avais créée, j'ai exécuté :

grant all on schema postgis to USERNAME; 

Et cela a résolu cette erreur

3 votes

Seulement USAGE est nécessaire. Ne pas accorder ALL à moins que vous ne le pensiez.

1voto

jase81 Points 111

Toutefois, si postgis est déjà activé sur votre base de données, il se peut que vous essayiez de restaurer une table postgis (avec une colonne de géométrie) dans un schéma autre que celui dans lequel l'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 une table avec une colonne géométrique dans un schéma différent, vous pouvez obtenir cette erreur.

J'ai résolu ce problème en modifiant mon extension postgis - cependant, je ne suis pas sûr que ce soit nécessairement la meilleure façon de procéder. Tout ce que je sais, c'est que cela m'a permis de restaurer la table.

0 votes

Jusqu'à la version 2.3 de Postgis, vous pouviez déplacer l'extension vers un autre schéma, ce qui a résolu ce problème à plusieurs reprises.

1voto

Karolius Points 8

Tout d'abord, assurez-vous que vous avez (correspondant à la version de pg : psql -V) postgis installé :

sudo apt install postgis postgresql-9.6-postgis-2.3

Juste avant la création des tables, ajoutez :

db.engine.execute('create extension postgis') 
db.create_all()

1 votes

Ça a marché pour moi. J'ai juste dû modifier légèrement la déclaration en CREATE EXTENSION IF NOT EXISTS postgis pour qu'il n'échoue pas lors des lancements suivants.

0voto

softweyr Points 38

Ou...

cursor.execute('create extension postgis')

dans votre programme python, en utilisant un curseur courant de psycopg2.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X