je pense aussi qu'il y a un probleme de logique :
lorsqu'on ne coche pas "Rechercher dans les sous-catégories" et qu'il ya des sous catégories, il met celle ci en double. ce qui veut dire qu'il ne vas rechercher dans la bdd les sous catégories pour les comparer avec les physiques ,et en plus et c'est là le probleme, il va quand même rechercher les sous-catégories physiques !
Or il ne devrait rechercher physiquement QUE les images situées au niveau de la catégorie et pas en dessous !
Avec ce système, si on décoche cette option on se retrouve avec tout en double !
Hors ligne
flop25 a écrit:
je pense aussi qu'il y a un probleme de logique :
lorsqu'on ne coche pas "Rechercher dans les sous-catégories" et qu'il ya des sous catégories, il met celle ci en double. ce qui veut dire qu'il ne vas rechercher dans la bdd les sous catégories pour les comparer avec les physiques ,et en plus et c'est là le probleme, il va quand même rechercher les sous-catégories physiques !
Or il ne devrait rechercher physiquement QUE les images situées au niveau de la catégorie et pas en dessous !
Avec ce système, si on décoche cette option on se retrouve avec tout en double !
je laisse toujours cochée cette case..
Hors ligne
Moi pas tout le temps
Mais ça n'enlève rien à l'incohérence soulignée
Hors ligne
moi ça m'est arrivé la seule fois où je l'ai décoché...
Hors ligne
je pète un cable !!
je rentre de reportage, et mets à jour la galerie.. quand j'ajoute en FTP un nouveau dossier en deuxième niveau, quand je synchronise (catégories seulement) le dossier supérieur pour faire prendre en compte le nouveau dossier, toutes les catégories voisines, de ce niveau, sont dupliquées !!!!
Deux nouveaux dossiers, deux fois de suite le problème !
le moyen pour réparer est d'intervenir sur la BDD...
il me faut trouver la cause car dans quelques semaine cela deviendra ingérable !
éric.
Hors ligne
en attendant que la cause de ce soucis soit identifiée et rectifiée
si tu as une tactique infaillible pour corriger n'hésite pas à nous en faire part car pour l'instant j'ai pas eu le temps de regarder trop en profondeur et du coup ton idée de rendre privée les catgories concernées me parait bonne, reste à savoir si tu as une série de requêtes à passer derrière ou un bout de script à nous proposer ;)
Hors ligne
pour ça je suis très mauvais.... il faut identifier les catégories dupliquées et les effacer de la BDD..
Hors ligne
oui mais pas que dans une table il me semble?
c'est pas grave c'est déjà sympa d'avoir répondu ;)
Hors ligne
si si, juste dans la table catégories... c'est tout.
ce matin, j'ai ouvert cette table,
- fait "rechercher" , entré le nom de la catégorie mère, noté son "ID".
- fait rechercher toutes les catégories dont l'id de la catégorie mère est celui noté.,
- trié les résultats par ordre alphabétique pour montrer les doublons, effacer la ligne la plus récente (dont l'id est le plus grand)
....
c'est un peu bricolage...
il faut trouver l'erreur...
je pense repartir d'une BDD nouvelle à la prochaine installation de PWG. il me faudra importer toutes les données, mais sans toucher à la structurte de la BDD .. je pense qu'ajouter des colonnes ne soit pas la source de cette erreur.
Hors ligne
euh y en a aussi dans la table images, bien sur qu'en détruisant uniquement les catégories erronnées ça fonctionne mais si il y a un lien avec la table images, tu bousilles les liens entre les 2 tables...
Hors ligne
Bonjour,
j'ai aussi des tas de problème de duplication de catégories physiques.
Pour simplifier le ménage, je ne fais des synchro "répertoires + fichiers" que sur une base propre.
Lorsque je crée une catégorie physique, je fais une synchro "répertoires" seulement pour éviter de polluer toutes les tables, et que les catégories dupliquées soient vides.
Ça me permet de les récupérer facilement :
SELECT id, name FROM `phpwebgallery_categories` WHERE `dir` IS NOT NULL AND nb_images =0 ORDER BY name
Si l'on s'apperçoit immédiatement du problème, les tables `phpwebgallery_group_access` et `phpwebgallery_user_access` n'ont pas encore été polluées, et l'on peut supprimer des séries de catégories dupliquées à coup de :
DELETE FROM `phpwebgallery_categories` WHERE id >= x AND id <= y;
en choisissant bien le x et le y.
Comme chaque fois, on fait une sauvegarde de sa base de données avant d'aller jardiner dedans !
<;o)
Dernière modification par chrisaga (2007-07-07 18:14:03)
Hors ligne
Si l'on a mal fait le ménage, à un moment où l'on avait des images dupliquées, on peut se retrouver avec des images liées à des catégories qui n'existent plus.
A priori, ce n'est pas franchement grave pour le fonctionnement, mais si on veut les trouver :
SELECT i.* , c.id FROM `phpwebgallery_image_category` AS i LEFT JOIN `phpwebgallery_categories` AS c ON i.category_id = c.id WHERE c.id IS NULL
et
SELECT i.id, i.file, i.path, c.id FROM `phpwebgallery_images` AS i LEFT JOIN `phpwebgallery_categories` AS c ON i.storage_category_id = c.id WHERE c.id IS NULL
Si l'on a une base MySQL en version 4, on peut transformer ça en une belle instruction DELETE pour faire du ménage d'un coup.
Si l'on est comme moi coincé en 3.23 par son provider, il faut bricoler por récupérer les valeurs de category_id :
SELECT DISTINCT ( i.category_id ), c.id FROM `phpwebgallery_image_category` AS i LEFT JOIN `phpwebgallery_categories` AS c ON i.category_id = c.id WHERE c.id IS NULL
puis supprimer les lignes correspondantes à coup de (x et y valeurs déduites du résultat du sélect précédent) :
DELETE FROM `phpwebgallery_image_category` WHERE `category_id` >= x and `category_id` <= y
De même :
De même : SELECT DISTINCT ( i.`storage_category_id` ), c.id FROM `phpwebgallery_images` AS i LEFT JOIN `phpwebgallery_categories` AS c ON i.storage_category_id = c.id WHERE c.id IS NULL
et :
DELETE FROM `phpwebgallery_images` WHERE `storage_category_id` >= x and `storage_category_id` <= y
Comme chaque fois, on fait une sauvegarde de sa base de données avant d'aller jardiner dedans !
En espérant que ça peut aider quelqu'un à survivre jusqu'à ce que le problème soit corrigé.
<:o)
Hors ligne
Merci Christophe.
J'avais fait une première marche dans Admin+Spéciales+Fonctions avancées
Fichiers portant le même nom dans plusieurs catégories physiques
On va pouvoir enrichir... Un plugin?
Hors ligne
Une question bête...
Sait-on pourquoi ces erreurs conduisant à ces duplications lors de certaines synchronisations... ??
Il me semble qu'une "réparation" style phpmyadmin, préalable à la synchronisation, limite les apparitions de ces erreurs.... cela laisse penser que les erreurs minimes apparaissent dans la BDD (comme on peut le constater de façon quasi permanente sur des grosses BDD) et que au bout d'un moment, ces "petites" erreurs conduisent à fausser la synchronisation et à créer des duplications...
- Est-il habituel et "normal" d'avoir des "petites" erreurs, sans consequences visibles, dans une base MySQL ?
- Sait-on pourquoi ?
Un plugin de réparation automatique serait évidement super.. est-ce vraiment enviseageable ?
Pour ma part, si je dois faire une synchronisation sur de nombreux dossiers en même temps (genre tous les sous-dossiers de 2007), je fait en premier une maintenance, puis une simulation et enfin la vraie synchronisation.
Le plus sur est de bosser sur un dossier à la fois, mais dans mon cas, c'est long d'aller le chercher dans la très longue liste, deux fois (fichiers puis IPTC).... et quand il y a beaucoup de dossier... il s'agit de ne pas en oublier..
Enfin.... le vrai sujet, je crois, est l'élimination des petites erreurs récurentes de la BDD..
@+
éric.
et merci pour tout !!
Hors ligne
Éric, tes questions sont les bonnes,
et tout ça ne devrait pas arriver.
Trouver le bug me semble préférable à faire un plugin de réparation automatique.
Ou pourrait peut-être faire une fonction de ménage en plus de la fonction de maintenance, ça peut toujours être utile, la preuve.
Cependant, vu mon niveau d'(inactivité) actuel sur le projet, et mon niveau de maîtrise de cette partie du code, je ne vais probablement pas me lancer là dedans.
Je préférerais comprendre pourquoi ça foire.
Au fait, je n'ai pas trouvé de fiche de bug correspondante.
J'ai mal cherché ? ou bien personne n'est dessus ?
<:o)
Hors ligne