Installation Postgis: le type «géométrie» n'existe pas

95

J'essaye de créer une table avec Postgis. Je le fais par cette 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 puis-je résoudre ce problème?

yetty
la source

Réponses:

201

J'ai eu le même problème, mais il a été résolu en exécutant le code suivant

CREATE EXTENSION postgis;

En détail,

  1. ouvrir pgAdmin
  2. sélectionnez (cliquez) votre base de données
  3. cliquez sur l'icône "SQL" dans la barre
  4. exécuter "CREATE EXTENSION postgis;" code
Krishna Sapkota
la source
3
Merci. BTW, si quelqu'un utilise 'psql' pour exécuter ce code, assurez-vous que le rôle a l'attribut / privilège 'Superuser'.
Yang
2
SAUVEGARDE DE VIE! Je pensais que j'avais déjà mis cela en place, alors j'ai continué à penser que c'était autre chose ...
James111
2
Notez que cela est spécifique à une base de données particulière que vous utilisez. Ce n'est pas à l'échelle de l'installation.
fréquence
1
J'ai remis un pg_dump, et j'ai eu le même problème. Mon extension postgis place ses données dans un SCHEME personnalisé, appelé postgis. J'avais besoin d'exécuter la commande suivante, et tout allait bien à nouveau:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
doekman
23

Si l'extension Postgis est chargée, alors votre SQL ne trouve peut-être pas le type de géométrie en raison d'un chemin de recherche manquant vers le schéma public.

Essayer

SET search_path = ..., public;

dans la première ligne de votre script. (remplacez ... par les autres chemins de recherche requis)

Ludwig
la source
22

Vous pouvez le faire depuis le terminal:

psql mydatabasename -c "CREATE EXTENSION postgis";
Brendan Nee
la source
18

Pour que psql s'arrête à la première erreur, utilisez -v ON_ERROR_STOP=1(qui est désactivé par défaut , c'est pourquoi vous voyez de nombreuses 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 selon votre situation. En guise de supposition, essayez cette commande avant d'installer le script sql:

ldconfig

(vous devrez peut-être préfixer avec sudoselon votre système). Cette commande met à jour les chemins de toutes les bibliothèques système, telles que GEOS.

Mike T
la source
5

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

psql my_database -c "CREATE EXTENSION postgis;"

Baptiste Donaux
la source
5

Cette erreur peut également se produire si vous essayez d'utiliser des types postgis sur un autre schéma plutôt que public.

Si vous créez votre propre schéma, en utilisant postgis 2.3 ou supérieur et rencontrez cette erreur, procédez comme suit comme indiqué ici :

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;

Vous pouvez ensuite utiliser les fonctionnalités postgis.

Leonardo Kuffo
la source
3

Vous devez également vous assurer que l'utilisateur sous lequel vous essayez d'utiliser l'extension postgis a accès au schéma dans lequel postgis est installé (qui dans les didacticiels que j'ai lus s'appelle «postgis»).

Je viens d'avoir cette erreur et elle a été résolue car 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

mozboz
la source
1

Les réponses ici peuvent résoudre votre problème, mais si vous avez déjà activé postgis 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 une table avec une colonne de géométrie dans un schéma différent, vous pouvez obtenir cette erreur.

J'ai résolu ce problème en modifiant mon extension postgis - mais je ne suis pas sûr que ce soit 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.

jase81
la source
jusqu'à la version 2.3 de Postgis, vous pourriez déplacer l'extension vers un autre schéma qui a résolu ce problème pour moi à quelques reprises
Daniël Tulp
0

Ou...

cursor.execute('create extension postgis')

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

softweyr
la source
0

Assurez-vous d'abord que postgis (correspondant à la version pg: psql -V) est 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()
Karolius
la source