PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 24/06/2016 15:20:37

HadanMarv
Membre

[PROBLEME DE DONNEES] La requête au résultat incompréhensible

Bonjour,

Je suis confronté à un problème que je n'avais jamais rencontré jusqu'alors et que j'espère vous allez pouvoir m'aider à résoudre.

J'ai une table A qui contient un champ a de type character varying(14).

J'ai été alerté par un utilisateur qu'une requête sur cette table lui retournait une erreur de ce type :
"n'a pas pu lire le bloc 5287 de la relation base/177867/522031 : a lu seulement 0 octets", semble indiqué que le disque dur doit en avoir un coup !

la requête est : select a from A where a = '34121227200056'
cependant en faisant select a from A where a like '3412122720005%' cela fonctionne correctement.

Je tente avec un autre jeu de donnée : 34121227200049 (avec la première requête) et là seconde surprise j'obtiens bien la ligne avec la chaîne 34121227200049 mais aussi une ligne avec la chaîne 06950303500011
qui vous en conviendrez avec moi n'a rien à voir. Encore plus étrange si je modifie un peu la requête avec :
select a from A where CAST(a as decimal) = cast('34121227200049' as decimal) et bien j’obtiens que ma ligne en question.

Merci d'avance de vos lumières

HadanMarv

Hors ligne

#2 24/06/2016 15:37:52

Marc Cousin
Membre

Re : [PROBLEME DE DONNEES] La requête au résultat incompréhensible

C'est probablement au niveau de l'index qu'il y a une corruption… Ce qui serait intéressant pour en être sûr, c'est d'avoir un explain de chacune des requêtes, pour voir à quoi il accède…  ou alors savoir à quoi correspond l'objet 522031 (select relname from pg_class where relfilenode=522031 )


Marc.

Hors ligne

#3 24/06/2016 16:38:13

HadanMarv
Membre

Re : [PROBLEME DE DONNEES] La requête au résultat incompréhensible

Effectivement l'index devait être corrompu, en mettant à jour l'index (reindex table A) tout est rentré dans l'ordre.
L'objet 522031 correspondait à la table en question.
Merci de votre aide.

Hors ligne

Pied de page des forums