Question

Je travaille avec l'API mediawiki (par exemple, http://fr.wikipedia.org /w/api.php ) et je voudrais pouvoir "tronquer" les tables mysql afin de réinitialiser l’installation locale tout en conservant certaines tables (utilisateurs,? ...). Quelles seraient les requêtes SQL?

Je dirais: tronquez toutes les tables mais $ {PREFIX} _user et mettez à jour $ {PREFIX} _user set user_editcount = 0?

Une autre suggestion (plus sûre)?

Était-ce utile?

La solution

La réponse correcte a été affichée sur la liste de diffusion de MediaWiki: voir http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html

Selon ce message, il est probablement correct de tronquer utilisateur_newtalk , page , révision , texte , archive , liens de page , liens de modèle , imagelinks , liens de catégorie , catégorie , externallinks , langlinks , hitcounter , liste de suivi , image , < code> oldimage , filearchive , des modifications récentes , index de recherche , interwiki , querycache , objectcache , log_search , rétroliens , travail , querycache_info , redirection , querycachetwo , restrictions de page , titres protégés> / , protections de page , étiquettes de modification , résumé_tiquette , étiquette_valide , l10n_cache .

Sur les versions plus récentes, ajoutez msg_resource et msg_resource_list à cette liste, à tronquer les caches liés aux messages .

Aussi: n'oubliez pas de supprimer les fichiers du dossier de l'image, si vous tronquez le tableau d'image. Sinon, ils seront désynchronisés et vous risquez de ne pas pouvoir télécharger certaines images.

Autres conseils

obtenir la liste des tables de votre base de données:

echo "show tables;" | mysql -u user_name -p db_name > tables

déterminez les tables que vous souhaitez tronquer, puis créez un script SQL

TRUNCATE TABLE a;
TRUNCATE TABLE b;
update <prefix>user set user_editcount=0;

puis exécutez-le via le client:

mysql -u user_name -p database_name < truncate-all.sql
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top