#1 Wed 15 April 2009 11:01
- darts
- Juste Inscrit !
- Date d'inscription: 15 Apr 2009
- Messages: 9
problème connexion PostgreSql QGIS
Bonjour,
Je travaille sous Debian et je n'arrive pas du tout à accéder à ma base de données postgres.
Sous QGIS, dans " Connexion PostGreSql " je configure ma connexion (le test est bon) mais lorsque que je veux ensuite connecter j'ai le message d'erreur suivant :
La connection à la base de donnée a réussi, mais aucune table n'est accessible.Le message d'erreur de la base de donnée est :
ERREUR: le type « geometry » n'existe pas
J'ai lu plusieurs sujets dans cette partie du forum pour résoudre ce problème; j'ai vu qu'il fallait exécuter les scripts SQL (lwpostgis.sql et spatial_ref_sys.sql). Les tables geometry_columns et spatial_ref_sys sont créées et j'ai pu seulement valider le fichier spatial_ref_sys.sql.
J'ai bien sûr installer le paquet postgis.
J'espère avoir bien décrit mon problème. J'ai peut être oublier une étape dans la configuration ...
Merci d'avance.
Dernière modification par darts (Wed 15 April 2009 11:05)
Hors ligne
#2 Wed 15 April 2009 11:15
- Lionel B
- Participant actif
- Lieu: Macon
- Date d'inscription: 5 Sep 2005
- Messages: 83
Re: problème connexion PostgreSql QGIS
Bonjour,
La procédure normale pour initialiser la cartouche spatiale dans une base de données est
connection en tant que user postgres pour simplifier la gestion des accès (su - postgres ) puis exécuter :
createlang plpgsql votrebase
psql -f /chemin/lwpostgis.sql votrebase
psql -f /chemin/spatial_ref_sys.sql
Si vous n'avez pas pu exécuter le script lwpostgis.sql correctement, il doit y avoir un problème. Faites nous remonter le message d'erreur rencontré.
Cordialement
Hors ligne
#3 Wed 15 April 2009 11:33
- darts
- Juste Inscrit !
- Date d'inscription: 15 Apr 2009
- Messages: 9
Re: problème connexion PostgreSql QGIS
En effectuant la commande : psql -f /chemin/lwpostgis.sql votrebase
Je rencontre le message d'erreur suivant :
psql:/usr/share/postgresql-8.3-postgis/lwpostgis.sql:6460: ERREUR: la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc
de la transaction
Je l'ai x fois pour chaque fonction du script.
J'ai aussi essayé de créer la base "geometry_columns" grâce aux lignes de code dans lwpostgis.sql mais le message reste le même.
Hors ligne
#4 Wed 15 April 2009 11:40
- Lionel B
- Participant actif
- Lieu: Macon
- Date d'inscription: 5 Sep 2005
- Messages: 83
Re: problème connexion PostgreSql QGIS
Le message n'est pas assez explicite. Mais je soupçonne que vous ayez oublié la commande
createlang plpsql votrebase
qui autorise l'uitilisation du langage procédural dans la base de données (le script lwpostgis.sql en a besoin).
Sinon, il faut aller voir dans le fichier de log de postgres pour trouver plus d'informations sur les raisons du plantage.
Dans une deuxième console, lancez la commande
tail -f /var/log/postgresql/postgresql-8.3-main.log
Puis relancer l'application du script lwpostgis.sql . Vous devriez alors voir une message d'erreur plus riche au moment du plantage.
Hors ligne
#6 Wed 15 April 2009 12:24
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: problème connexion PostgreSql QGIS
Bonjour,
Je travaille sous Debian et je n'arrive pas du tout à accéder à ma base de données postgres.
Sous QGIS, dans " Connexion PostGreSql " je configure ma connexion (le test est bon) mais lorsque que je veux ensuite connecter j'ai le message d'erreur suivant :La connection à la base de donnée a réussi, mais aucune table n'est accessible.Le message d'erreur de la base de donnée est :
ERREUR: le type « geometry » n'existe pas
J'ai lu plusieurs sujets dans cette partie du forum pour résoudre ce problème; j'ai vu qu'il fallait exécuter les scripts SQL (lwpostgis.sql et spatial_ref_sys.sql). Les tables geometry_columns et spatial_ref_sys sont créées et j'ai pu seulement valider le fichier spatial_ref_sys.sql.
J'ai bien sûr installer le paquet postgis.
J'espère avoir bien décrit mon problème. J'ai peut être oublier une étape dans la configuration ...
Merci d'avance.
Bonjour,
comme indiqué dans les autres reponses, installer les paquets Postgis n'installe pas postgis sur une base de données. Ca installe juste scripts SQL et bibliotheque partagée permettant de creer une base postgis.
Il faut donc ensuite, pour CHAQUE base sur laquelle on souhaite installer Postgis, lancer des commandes de creation de langage et de scripts SQL OU, creer une base dite 'template', contenant postgis, et a partir de laquelle on creera a loisir les autres bases "Postgis enabled":
Soit:
createlang -U <username> plpgsql mabase
psql -U <username> -f /chemin/lwpostgis.sql -d mabase
psql -U <username> -f /chemin/spatial_ref_sys.sql -d mabase
Soit:
createdb -U <username> template_postgis
createlang -U <username> plpgsql template_postgis
psql -U <username> -f /chemin/lwpostgis.sql -d template_postgis
psql -U <username> -f /chemin/spatial_ref_sys.sql -d template_postgis
puis, creation de sa base de travail a partir de ce template:
createdb -U <username> -T template_postgis ma_base
(ma_base contient alors les tables, fonctions, types etc. de PostGIS)
Concernant l'execution des fichiers SQL et les erreurs eventuelles, seule la premiere erreur est pertinentes, toutes les autres signifient juste que la transaction est annulée suite a la premiere erreur. Pour la debusquer "tranquillement", on peut rediriger la sortie de la commande psql dans un fichier, puis lire le debut du fichier:
psql -U username -f mon_fichier.sql -d ma_base > log.txt 2>&1
puis lire le fichier:
more log.txt
(le 2>&1 permettant de mettre dans le meme fichier a la fois les messages d'erreurs et les messages d'information).
Nicolas
Hors ligne
#7 Wed 15 April 2009 15:24
- darts
- Juste Inscrit !
- Date d'inscription: 15 Apr 2009
- Messages: 9
Re: problème connexion PostgreSql QGIS
Merci pour vos réponses, je suis parvenu à exécuter les scripts Sql. (Oubli du createlang ...)
J'ai néanmoins un dernier message sous QGIS:
La connection à la base de donnée a réussi, mais aucune table n'est accessible.
Veuillez vérifier si vous avez le droit d'effectuer une commande SELECT sur une table ayant une géométrie
PostGIS.
Je suis pourtant connecté avec un compte au rang administrateur sous pgAdmin possédant tous les droits.
Est ce que vous savez quel détail il reste à paramétrer ici ?
Dernière modification par darts (Wed 15 April 2009 15:25)
Hors ligne
#8 Wed 15 April 2009 15:35
Re: problème connexion PostgreSql QGIS
Quels sont les droits des tables spatiales et geometry_columns ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#9 Wed 15 April 2009 15:45
- darts
- Juste Inscrit !
- Date d'inscription: 15 Apr 2009
- Messages: 9
Re: problème connexion PostgreSql QGIS
Sur ces 2 tables j'ai tous les droits suivants: select, insert, update, delete, references et trigger.
Hors ligne
#10 Wed 15 April 2009 15:55
Re: problème connexion PostgreSql QGIS
Oui mais pour quel utilisateur ? Quel utilisateur utilises tu dans les différents cas ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#11 Wed 15 April 2009 16:01
- darts
- Juste Inscrit !
- Date d'inscription: 15 Apr 2009
- Messages: 9
Re: problème connexion PostgreSql QGIS
J'ai créée un utilisateur " administrateur " à qui j'ai donné tous ces droits et c'est avec " administrateur " que j'effectue la connexion sous QGIS.
Et j'effectue toutes les différentes opérations avec lui, il est aussi le propriétaire de ces tables.
Dernière modification par darts (Wed 15 April 2009 16:02)
Hors ligne
#12 Wed 15 April 2009 16:12
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: problème connexion PostgreSql QGIS
J'ai créée un utilisateur " administrateur " à qui j'ai donné tous ces droits et c'est avec " administrateur " que j'effectue la connexion sous QGIS.
Et j'effectue toutes les différentes opérations avec lui, il est aussi le propriétaire de ces tables.
creation avec PgAdmin ?
il y a bien eu des "grant select" ou "grant all" explicites sur les tables en question ?
Qui est le proprietaire des tables ? l'utilisateur administrateur ou postgres ?
Un bon test serait d'utiliser le meme utilisateur avec PgAdmin ou en console psql et de voir si tu peux lister le contenu des tables, y acceder.
Nico
Hors ligne
#13 Wed 15 April 2009 16:56
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: problème connexion PostgreSql QGIS
on ne sait jamais donc je me lance... Tu as bien inséré des données géographiques dans ta base spatiale ? Si oui, vois tu bien cette ou ces tables depuis PgAdmin ?
Guillaume
Hors ligne
#14 Wed 15 April 2009 16:56
Re: problème connexion PostgreSql QGIS
Les colonnes géométriques ont-elles bien été créées avec la fonction addgeometrycolumn() de postgis, qui renseigne entre autre la table geometry_columns ?
SELECT AddGeometryColumn('','nom_table','nom_colonne_geometrique',code_epsg_projection,'type_geometrie',nombre de dimensions);
Dernière modification par Mathieu BOSSAERT (Wed 15 April 2009 16:58)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#15 Thu 16 April 2009 15:42
- darts
- Juste Inscrit !
- Date d'inscription: 15 Apr 2009
- Messages: 9
Re: problème connexion PostgreSql QGIS
Bon pour le moment j'ai chargé un fichier shp sous QGIS. Hop une belle carte avec plusieurs colonnes d'attributs. Mais ces données là ne sont pas stockées dans ma base de données (c'est un projet récupéré) et j'aimerai par exemple pouvoir ajouter des données à faire apparaître sur la carte.. (ajout/suppression de colonnes/lignes ... ) Et tout cela à partir de ma base bien sûr.
Est que cela est possible ?
Sinon à partir de la console pas de problème, j'ai effectué les grant sur mes tables, je peux faire le select sans problème, et mon " administrateur " est propriétaire des tables.
Hors ligne
#16 Thu 16 April 2009 18:44
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: problème connexion PostgreSql QGIS
Bon pour le moment j'ai chargé un fichier shp sous QGIS. Hop une belle carte avec plusieurs colonnes d'attributs. Mais ces données là ne sont pas stockées dans ma base de données (c'est un projet récupéré) et j'aimerai par exemple pouvoir ajouter des données à faire apparaître sur la carte.. (ajout/suppression de colonnes/lignes ... ) Et tout cela à partir de ma base bien sûr.
Est que cela est possible ?
Sinon à partir de la console pas de problème, j'ai effectué les grant sur mes tables, je peux faire le select sans problème, et mon " administrateur " est propriétaire des tables.
Oui, c'est tout a fait possible avec Qgis. edition des geometries, des attributs, ajout/suppression de colonnes.
(j'aime bien OpenJump aussi avec son plugin dbquery, qui permet d'executer des requetes SQL directement (mysql, oracle, postgis) et afficher les resultats graphiques (requetes renvoyant des geometries) dans l'application.
Nicolas
Hors ligne
#17 Fri 17 April 2009 10:03
Re: problème connexion PostgreSql QGIS
Nicolas,
Il me semble que QGIs permette cela aussi mais peut être pas aussi puissant qu'OpenJUMP car limité à la clause WHERE, il me semble qu'il y a un plugin aussi pour réaliser des requêtes SQL.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#18 Fri 17 April 2009 17:48
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: problème connexion PostgreSql QGIS
Nicolas,
Il me semble que QGIs permette cela aussimais peut être pas aussi puissant qu'OpenJUMP car limité à la clause WHERE, il me semble qu'il y a un plugin aussi pour réaliser des requêtes SQL.
Y.
Merci pour cette info Yves, je vais regarder ça de plus prés.
Car effectivement, dans OpenJump, point besoin de tables existantes, toute requête est affichée, eventuellement graphiquement si elle contient des géométries.
Nico
Hors ligne