Pages: 1
- Sujet précédent - QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0' - Sujet suivant
#1 Fri 10 October 2014 16:33
- dungeonkeeper81
- Participant actif
- Lieu: Lausanne
- Date d'inscription: 12 Jan 2011
- Messages: 70
- Site web
QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Bonjour,
J'ai découvert avec horreur un bug très gênant sur QGIS, j’espère que vous pourrez m'aider.
Situation:
J'édite avec QGIS une table PostGIS de type point (des fosses à déchets).
Cette table à une relation d'un attribut vers une table de valeurs (liste de choix).
[img]http://img4.hostingpics.net/pics/574322Capture.png[/img]
La relation est configurée dans QGIS comme suit:
Attribut "FK_TYPE" > Outil d'édition 'Valeur relationnelle' > Couche T_TYPE, Colonne clé "ID", Colonne de valeurs "VALEUR"
J'ai aussi coché Autorisé une valeur nulle.
Le bug:
Je défini pour un objet T_FOSSE une valeur pour "FK_TYPE" et j'enregistre... aucun problème.
Si je réédite ce même objet et je choisi (pas de sélection) pour l'attribut "FK_TYPE", au moment de l’enregistrement, erreur de commit !!!
[img]http://img11.hostingpics.net/pics/969169Capture.png[/img]
QGIS définit (pas de sélection) en valeur '0' au lieu de NULL et donc, message d'erreur:
[img]http://img11.hostingpics.net/pics/988819Capture.png[/img]
Toutes aides est la bienvenue, je suis absent ce week-end, pas d'émois si je ne réponds pas tout de suite.
Merci d'avance.
Hors ligne
#2 Mon 13 October 2014 09:49
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Bonjour dungeonkeeper81,
As-tu regardé le réglage de la "représentation des valeurs NULL" présent dans les options de QGis sous l'onglet "Sources de données".
Est-il bien à NULL ?
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#3 Mon 13 October 2014 10:06
- dungeonkeeper81
- Participant actif
- Lieu: Lausanne
- Date d'inscription: 12 Jan 2011
- Messages: 70
- Site web
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Bonjour MathieuB,
Merci pour cette piste. La représentation des valeurs NULL est bien à NULL.
J'ai aussi essayé en laissant cette représentation vide mais cela ne résout pas le problème.
Hors ligne
#4 Mon 13 October 2014 10:34
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Bonjour,
J'utilise encore trop peu ces fonbctionnalités de QGIS pour percevoir toute ta démarche mais la valeur "NULL" fait-elle partie des valeurs possibles de ta clé étrangère dans PostGIS?
Hors ligne
#5 Mon 13 October 2014 12:21
- dungeonkeeper81
- Participant actif
- Lieu: Lausanne
- Date d'inscription: 12 Jan 2011
- Messages: 70
- Site web
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Bien le bonjour SANTANNA,
Non, la valeur NULL ne fait pas parti des valeurs possibles des clés étrangères dans PostGIS.
Une solution à froid serait d'implémenter la valeur NULL avec l'ID '0' dans la table des valeurs possibles... mais ce n'est pas très académique.
Hors ligne
#6 Mon 13 October 2014 12:58
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Et pourquoi ne pas plutôt implémenter NULL (ou "en attente", "A renseigner", "Non défini"... ) comme une des valeurs possibles de ton champ dans rm_fosse_tbd_type? Tu rencontres bien une situation ou à un moment donné, tu n'as pas l'info sur le type de fosse et aucune des deux autres valeurs n'est appropriée...
Il ne faut pas confondre ce que QGIS propose comme interface pour faciliter la saisie et ce que ta base de données autorise (c'est elle qui a le dernier mot). Je pense que le système tel qu'il est passerait si ton champ "type" n'avait pas obligation (dans ta structure de BD) de n'autoriser que "fosse à benne" et "fosse à déchets". Si tu n'autorises pas le null, QGIS aura beau essayer, ça ne passera pas.
J'imagine notamment que dans un contexte de shapefile ou il n'y a pas ces relations, le NULL devrait passer sans souci.
Hors ligne
#7 Mon 13 October 2014 13:39
- dungeonkeeper81
- Participant actif
- Lieu: Lausanne
- Date d'inscription: 12 Jan 2011
- Messages: 70
- Site web
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Ok, donc je vais implémenter 'Non défini' avec un "ID" de '0' dans la liste de valeur.
C'est ce que je disais juste avant, c'est une solution qui fonctionne.
Merci.
Hors ligne
#8 Mon 19 January 2015 11:53
Re: QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0'
Bonjour à tous,
Non, la valeur NULL ne fait pas parti des valeurs possibles des clés étrangères dans PostGIS.
Je viens de tester la close "MATCH FULL" d'une contrainte de clé étrangère (MATCH SIMPLE est la close par défaut).
Elle permet de ne pas renseigner la colonne.
La contrainte n'est vérifiée que si la clé étrangère est renseignée.
Code:
CREATE TABLE temp.toto ( id serial PRIMARY KEY, id_table_liee integer NULL, CONSTRAINT fk_tot_intervention_sur_site FOREIGN KEY (id_table_liee) REFERENCES intervention_site.intervention_sur_site (id_intervention) MATCH FULL ON UPDATE NO ACTION ON DELETE NO ACTION ) WITH ( OIDS=FALSE ); INSERT INTO temp.toto(id_table_liee) VALUES (12); /*La requête a été exécutée avec succès : une ligne modifiée. La requête a été exécutée en 13 ms.*/ INSERT INTO temp.toto(id_table_liee) VALUES (null); /*La requête a été exécutée avec succès : une ligne modifiée. La requête a été exécutée en 12 ms.*/ INSERT INTO temp.toto(id_table_liee) VALUES (12000); /*ERREUR: une instruction insert ou update sur la table « toto » viole la contrainte de clé étrangère « fk_tot_intervention_sur_site » DETAIL: La clé (id_table_liee)=(12000) n'est pas présente dans la table « intervention_sur_site ».*/
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.4 : Bug avec PostGIS, valeur NULL transcrite par '0' - Sujet suivant