Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
[sympa-fr] Re: fichier_subscribers,_sources_et_visibilité_des_abonnements
- From: "Stephane Davy" <adresse@cachée>
- To: adresse@cachée, adresse@cachée, adresse@cachée
- Subject: [sympa-fr] Re: fichier_subscribers,_sources_et_visibilité_des_abonnements
- Date: Fri, 02 Jun 2006 10:03:42 +0200
Bonjour,
je remets sympa-fr dans la boucle au cas où cela intéresserait quelqu'un.
Olivier_Salaün_-_CRU <adresse@cachée> wrote:
> Stephane Davy wrote:
>
> >Je pense que j'ai trouvé l'origine du problème. En fait, la fonction
fetchrow_hashref renvoie un hachage dont les clefs ne sont pas forcément en
minuscule... Du coup, dans la fonction get_which_db, les appels du type
$l->{'list_subscriber'} ne renvoient rien, mais $l->{'LIST_SUBSCRIBER'} oui...
> >
> >Une parade possible est de forcer fetchrow_hashref à passer les colonnes en
minuscule. On peut le faire au niveau du handle: $dbh->{'FetchHashKeyName'}
='NAME_lc'.
> >En gros, il faudrait passer partout où il y a établissement d'un handle et
forcer cette propriété.
> >
> >
> Ca semble indiquer que vous avez créé les tables avec les noms de
> colonnes en majuscule, non ?
> Dans ce cas il vous suffit d'effectuer un ALTER pour changer les noms de
> champs.
>
> On ne nous a jamais reporté ce type de problème avec Oracle...
>
En fait, nous avons utilisé le script fourni dans l'archive Sympa en adaptant
simplement le chemin vers sqlplus. De plus, les noms de colonnes sont stokées
en
majuscule dans les tables Oracle. Ce qui est étrange, c'est que le problème ne
se produit que sur une table, pas les autres.
D'après la documentation de DBI, c'est une bonne idée de le forcer:
"FetchHashKeyName" (string, inherited)
The "FetchHashKeyName" attribute is used to specify
whether the fetchrow_hashref() method should perform
case conversion on the field names used for the hash
keys. For historical reasons it defaults to '"NAME"' but
it is recommended to set it to '"NAME_lc"' (convert to
lower case) or '"NAME_uc"' (convert to upper case)
according to your preference. It can only be set for
driver and database handles. For statement handles the
value is frozen when prepare() is called.
Cordialement,
--
Stéphane Davy
- [sympa-fr] Re: fichier_subscribers,_sources_et_visibilité_des_abonnements, Stephane Davy, 02/06/2006
Archives gérées par MHonArc 2.6.19+.