[spip-dev] [SPIP 1.443] Bug cache des forums ?

Bonjour,

j'ai inclus dans un squelette d'article le code pour les forums issu
des squelettes par défaut, et voici l'erreur que j'ai à la place de
l'affichage de la page :

DB Error: already exists INSERT INTO spip_forum_cache (id_article,
id_rubrique, id_breve, id_forum, fichier) VALUES (320, 35, 0, 0,
'5/article-320.004018') [nativecode=1062 ** Duplicate entry
'5/article-320.004018-0-320-35-0-0' for key 1]

Il doit y avoir un manque quelque part de quelque chose qui viderait
la table, non ???

-Nicolas

D'accord alors visiblement tu as modifié le code SPIP (non mais ??).

Ah bin oui, y'a plein de trucs qui n'y étaient pas ... :wink:

Pourtant, je ne crois pas avoir changé quoi que ce soit sur les
forums, donc ça m'étonne.

Essaie un INSERT IGNORE à la place (je ne sais pas si ça marche
ailleurs que sous MySQL, mais bon....).

Ca marche, merci !!!

Une idée de la raison de ce bug, tout de même ???

-Nicolas

Essaie un INSERT IGNORE à la place (je ne sais pas si ça marche
ailleurs que sous MySQL, mais bon....).

Ca marche, merci !!!

Une idée de la raison de ce bug, tout de même ???

C'est simplement que MySQL ne dit pas grand'chose quand tu insères une
clé unique existant déjà (quoique... t'as enlevé un @ peut-être ?), et
ta couche de choseDB renvoie une erreur. C'est une clé unique qui sert
simplement à éviter les doublons, mais ne revêt pas de cohérence sémantique
particulière.

C'est simplement que MySQL ne dit pas grand'chose quand tu insères
une clé unique existant déjà

Oui, je sais bien, mais est-il "normal" que SPIP essaie d'insérer un
enregistrement qui existe déjà ???

J'ai vérifié, je n'ai rien changé à ce niveau, sinon le passage
intermédiaire par PEAR::DB dans spip_query ....

-Nicolas

Oui, je sais bien, mais est-il "normal" que SPIP essaie d'insérer un
enregistrement qui existe déjà ???

Oui, si tu regardes la sémantique de la table, elle sert simplement à
enregistrer les dépendances forums <-> fichiers cache. Rien d'étonnant
à ce qu'une dépendance apparaisse en plusieurs occurences.

a+

Antoine.

Oui, si tu regardes la sémantique de la table, elle sert simplement
à enregistrer les dépendances forums <-> fichiers cache.

Jusque là je suis d'accord.

Rien d'étonnant à ce qu'une dépendance apparaisse en plusieurs
occurences.

Bin là par contre, je ne saisi pas le truc. Si le fichier existe en
cache pour l'élément traité, pourquoi essayer de créer le même ???

-Nicolas

Rien d'étonnant à ce qu'une dépendance apparaisse en plusieurs
occurences.

Bin là par contre, je ne saisi pas le truc. Si le fichier existe en
cache pour l'élément traité, pourquoi essayer de créer le même ???

hmmmm, tu n'essaies pas de créer de fichier, tu enregistres les
dépendances forum lors de l'exécution des boucles... Enfin bon, quoi ;-))