Fork me on GitHub




(1) 2 »


Recomptage sujets/posts
Team FrXoops
Inscrit: 12/08/2003 14:34
De Montpellier
Messages: 209
Bonsoir,

sur un site où on sest fait spammer (+ de 60 000 messages), j'avais entrepris de tout supprimer à la main. grosse erreur.

Depuis je me heurte à un problème : il m'est impossible de remettre correctement les "last_post_id", le nombre de page, et tout ce qui va avec. J'ai des compteurs faux dans tous les sens, et la synchro du forum ne donne rien...

Quelqu'un aurait une idée ?

le site > scoot-boost.com/html/ (2.5.6)

Posté le : 22/04/2016 00:18

11 ans de Xoops !
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Salut,

essaye plusieurs fois de lancer la synchro...

Posté le : 22/04/2016 08:58

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Dans quelles tables les messages ont-ils été supprimés ?
Il faut peut être aussi supprimer les enregistrements dans les tables liées à savoir celles qui contiennent le champ "forum_id" d'après ce que je vois dans le fichier mysql.sql du module:

- bb_forums
- bb_moderates
- bb_posts
- bb_topics
- bb_type_forum

La seul fonction de synchro que j'ai trouvée qui contienne du code se trouve dans la class "topic" et je n'ai pas l'impression qu'elle gère les suppressions et les enregistrements orphelins.

Il faudrait faire je pense des requête de suppression en liant la table principale et une sélection sur une valeur null de la table principal.
Je prépare un un exemple.

JJDai

Posté le : 22/04/2016 09:52

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
opps je suis pas bien réveillé, le champ qu'il faut chercher n'est pas forum_id mais topic_id, donc les tables en questions:

bb_topics
bb_archive
bb_posts
bb_votedata

JJDai

Posté le : 22/04/2016 10:20

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Le mieux est de procéder en deux temps pour chaque table, d’abord faire une sélection pour vérifier qu'il y a bien des enregistrements à supprimer:
Exemple avec la table "bb_posts"
SELECT children.topic_id AS children_topic_idtopics.topic_id AS topics_topic_id
FROM x255_bb_posts children
LEFT JOIN x255_bb_topics topics ON children
.topic_id topics.topic_id
WHERE  topics
.topic_id IS NULL;

Et ensuite si il y a des enregistrement, les supprimer:
DELETE children FROM  x255_bb_posts children
LEFT JOIN x255_bb_topics topics ON children
.topic_id topics.topic_id
WHERE  topics
.topic_id IS NULL;


Le principe, faire une liaison a gauche sur la table à nettoyer avec la table principale. Cela permet de sélectionner tous les enregistrements de la table enfants même si 'il n'y a pas d'enregistrement dans la table principale. Pour les enregistrements manquants le champ de la table principale qui n'existe pas aura pour valeur "Null"; Il suffit d'ajouter une clause "WHERE" en testant le champs de la table principale, si il est nul il faut supprimer l'enregistrement de la table enfant.

Dans les deux requêtes en exemples il suffit de remplacer le nom de la table enfant et le préfixe des tables "x255_" dans mon exemple soit:
1 - remplacer "x255_posts" par "x255_archive" par exemple
2 - remplacer "x255_" par le préfixe utilisé dans la base
Comme j'ai utilisé des alias le reste n'est pas à modifier.


SELECT children.topic_id AS children_topic_id, topics.topic_id AS topics_topic_id
FROM x255_bb_posts children
LEFT JOIN x255_bb_topics topics ON children.topic_id = topics.topic_id
WHERE topics.topic_id IS NULL;

DELETE children FROM x255_bb_posts children
LEFT JOIN x255_bb_topics topics ON children.topic_id = topics.topic_id
WHERE topics.topic_id IS NULL;

JJDai

PS: Précaution d'usage, faire une sauvegarde de la base ou des tables du module, on ne sait jamais,
et peut être relancer un synchro pour finir.


Posté le : 22/04/2016 10:46

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 12/08/2003 14:34
De Montpellier
Messages: 209
Hello,

merci pour ta piste, je vais regarder cela :)

@alain : je l'ai fait, si je fais par blocs de 1000 ça passe pas (trop long je pense la requete) ça passe que par 100 000.
Ca met juste à jour les compteurs à des endroits. Mais ça calcule pas tout. J'ai supprimé un peu partout dans bb_posts, bb_topic, bb_posts_text et c'est justement entr eles deux tables de posts déjà que j'ai un soucis, car j'ai environ 2 000 d'écart entre les deux... (et j'ai encore plein de messages pourris...).

Posté le : 30/04/2016 03:08

11 ans de Xoops !
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 12/08/2003 14:34
De Montpellier
Messages: 209
Hello :)

J'ai exécuté ta requête. Il me sort 27 enregistrements.

Sauf que j'ai :
- sb_bb_posts : 183 233
- sb_bb_posts_text : 189 643

Soit une différence de 6 410... :(

Posté le : 09/05/2016 03:26

11 ans de Xoops !
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
De quelle requête parles-tu?
chez moi ces requêtes fonctionnent, mais si la base ou l'intégrité des données sont corrompues il faut peut être adapter les requêtes, sans la base de données sous les yeux il est difficile de se rendre compte.
JJDai

Posté le : 10/05/2016 12:25

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 12/08/2003 14:34
De Montpellier
Messages: 209
Celle que tu m'as donné juste au dessus ^^

Il te faudrait quoi ?

Posté le : 21/05/2016 01:45

11 ans de Xoops !
Partager Twitter Partagez cette article sur GG+
Re: Recomptage sujets/posts
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Bonjour,
Citation :
J'ai exécuté ta requête. Il me sort 27 enregistrements.

C'est sans doute qu'il n'y a que 27 enregistrements qui n'ont plus de lien.
Cela cache peut être autre chose.

Citation :
Il te faudrait quoi ?

Il faudrait un accès à la base, mais en ce qui me concerne, je prends pas le risque d’intervenir directement sur les bases de chacun, je ne peux que donner des pistes et de possibles solutions.

JJDai

Posté le : 21/05/2016 11:11

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

35 Personne(s) en ligne (26 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 35 | Plus ...