|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
Bonjour,
je viens vers vous pour essayer de comprendre comment fonctionne la vérification de l'unicité dans postgresql (v 7.4.8) (et au final essayer de résoudre mon problème). Pour simplifier, j'ai une table trace_object qui comporte 3 colonnes : code_barre_id, SERIAL,PKEY code_barre, varchar (15), UNIQUE code_barre_crypte, varchar(15), UNIQUE sachant que la colonne code_barre_crypte est dérivée de la colonne code_barre : code_barre_crypte = text2code128 (code_barre). La fonction text2code128 est une fonction qui prend en entrée le code-barre lisible et renvoie en sortie le code-barre crypté. Mon souci intervient pour 2 code-barres que je veux insérer dans ma table : AB28662097 et AB28662098. Les code-barres cryptés renvoyés par la fonction text2code128 sont respectivement ÌABÇ<b4ÅÃÎ et ÌABÇ<b4ÆÊÎ. A priori, ils sont différents....mais pas pour postgesql qui me jette en me disant que la contrainte d'unicité de la colonne code_barre_crypte est violée () Citation:
Code :
CREATE UNIQUE INDEX unique_barcode128 ON trace_object USING btree (code_barre_crypte) Si quelqu'un s'est déjà trouvé dans ce cas de figure....ou si vous avez des pistes... merci d'avance. Précisions : j'ai essayé de mon interface web, de phpPgAdmin, en ligne de commande, avec ou sans l'aide de la fonction text2code128 : l'erreur est toujours la même. Autre précision : j'ai installé la routine text2code128 en tant que macro d'openoffice et j'ai imprimé les code-barres correspondant à AB28662097 et AB28662098. Je les ai scanné et ai bien retrouvé mes petits, cette fonction "fonctionne" donc à merveille..... |
|
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Bonjour,
quel est le code SQL qui te fait l'insertion dans la table ? Ce ne sont que ces deux codes qui te posent problème ?
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
ces 2 code-barres font partie d'un lot de 260 qui devaient être insérés dans une transaction.
Quand je supprime 1 de ces 2 code-barres, les 259 autres de la liste s'insère en base sans erreur. Donc ça ne doit pas venir de ma requête d'insertion (d'autant que j'arrive à environ 1000 code-barres de ce type, i.e. ABxxxxxxxx, insérés en base sans problème avant cela). I'm perplexe exemeples des code-barres insérés : AB28676949 AB28676950 AB28676952 AB28676953 AB28686772 AB28662097 AB28662098 AB28676940 AB28676941 AB28676942 AB28676945 AB28676946 |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Quel est l'encodage de ta base ? Si c'est SQL_ASCII, ça pourrait peut-être expliquer ce problème d'index...
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
00
|
|
|
#5 | |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
En effet, je voulais le préciser dans mon premier post, l'encodage de ma base est en SQL_ASCII....
Alors là en terme d'encodage, je n'y connaîs rien....quel type d'encodage devrais-je utiliser pour éviter ce genre de problème? Merci pour vos réflexions PS : j'ai joint les variables postgresql liées à ma base.... Citation:
|
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Si tu en as la possibilité, teste dans une base de données créée avec un encodage en UTF8.
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
je suis en phase de test........les encodages ça me saoule vraiment.
Je reviendrai vers vous quand j'aurais fait les tests requis..... merci encore mais si vous avez la solution tout prête...faites moi signe |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
le changement d'encodage en utf8 m'a un peu perturbé mon site...bref j'ai essayé de trouver une autre solution.
J'ai fait appel à la mailing list psql-general. On m'a conseillé de passer mon type de varchar en bytea....et le problème est résolu, après quelques aménagements dans mon code. le lien pour les intéressé(e)s : http://archives.postgresql.org/pgsql...2/msg01354.php b'nuit |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com