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 ?

0voto

cazort Points 199

La réponse à cette question a déjà été donnée, mais je voulais ajouter une réponse plus complète qui explique les points suivants por qué certaines commandes fonctionnent, et dans quelles circonstances les utiliser, et bien sûr, comment déterminer dans quelles circonstances vous vous trouvez.

Tout d'abord, vous devez vérifier que PostGIS est bien installé sur votre ordinateur. Lorsque vous êtes connecté à postgres, par exemple via psql, exécutez :

SELECT PostGIS_Full_Version();

S'il n'est pas installé, consultez les instructions spécifiques à la distribution et à la version pour installer PostGIS et installez-le.

En supposant que PostGIS soit installé, l'erreur est généralement due au fait que l'extension pour la base de données particulière n'a pas été "créée" (c'est une utilisation malheureusement trompeuse du langage, l'effet est plutôt "d'activer" l'extension). La façon dont PostgreSQL est configuré, par défaut, les nouvelles bases de données ne sont pas livrées avec des extensions activées, et vous devez les activer ("créer") pour chaque base de données. Pour ce faire, vous devez exécuter la commande suivante.

Il ne doit être exécuté qu'une seule fois :

CREATE EXTENSION postgis;

Je pense que vous avez besoin des privilèges de super-utilisateur pour la base de données particulière en question, afin d'exécuter cette commande.

En supposant que postgres est configuré de manière à ce que les permissions le permettent, vous pouvez exécuter cette commande depuis la ligne de commande en exécutant la commande suivante :

psql my_database -c "CREATE EXTENSION postgis;"

Vous devrez peut-être utiliser le -U et spécifier un utilisateur.

Dans certains cas, cependant, l'extension peut avoir déjà été créée, et installée sous un schéma différent de public, et le problème peut être un problème de permissions. Cela peut se produire comme dans la situation décrite par @mozboz, si vous créez un nouvel utilisateur mais que vous ne lui donnez pas accès au schéma. Pour détecter ce cas, recherchez un schéma séparé dans la base de données, avec une table appelée spatial_ref_sys car elle est créée lors de la création de l'extension.

Dans ce cas, vous devrez peut-être exécuter, une fois connecté à la base de données :

GRANT USAGE ON SCHEMA schema_name TO username;

D'après mon expérience, cette situation est rare et je n'ai jamais trouvé de raison de procéder de cette façon. Le site schema_name est souvent, mais pas toujours postgis . Par défaut, si vous exécutez la première commande ici, elle créera l'extension sous le dossier public schéma.

Je pense que USAGE est généralement suffisant dans la plupart des cas, mais vous pouvez accorder plus de privilèges si vous souhaitez que l'utilisateur puisse réellement modifier les données ; la seule fois où cela s'est produit pour moi, c'était pour ajouter de nouvelles projections à la base de données de l'UE. spatial_ref_system mais même cela est rare car par défaut ce tableau inclut les projections les plus couramment utilisées.

0voto

Mon expérience était que j'essayais de charger le fichier ism dans un fichier différent de "public". J'ai initialisé l'extension postgis sur un autre schéma que public. Cela n'a pas fonctionné. Finalement, j'ai dû supprimer l'extension, puis j'ai créé l'extension postgis dans public. Après cela, j'ai pu charger l'osm dans mon nouveau schéma.

Osm recherche toujours le fichier d'extension en public, quel que soit l'endroit où vous avez l'intention d'installer les fichiers osm dans un autre schéma.

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