2009-10-21 7 views
0

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

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

Une autre suggestion (plus sûre)?

Répondre

2

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

Selon ce poste, il est probablement correct tronquer user_newtalk, page, revision, text, archive, pagelinks, templatelinks, imagelinks, categorylinks, category, externallinks, langlinks, hitcounter, watchlist, image, oldimage, filearchive , recentchanges, searchindex, , querycache, objectcache, log_search, trackbacks, job , querycache_info, redirect, querycachetwo, page_restrictions, protected_titles, page_props, change_tags, tag_summary, valid_tag, l10n_cache. Dans les versions plus récentes, ajoutez msg_resource et msg_resource_list à cette liste, à truncate message related caches. En outre: N'oubliez pas de supprimer les fichiers dans le dossier image, si vous tronquez le tableau des images . Sinon, ils seront désynchronisés et vous aurez peut-être du mal à télécharger certaines images.

0

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

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

déterminer les tables que vous souhaitez tronquer, puis créer un script SQL

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

puis exécutez-le par le client:

mysql -u user_name -p database_name < truncate-all.sql 
+0

Votre réponse ne me dit pas * quelles * tables de mediawiki devraient être tronquées. – Pierre

+0

utilisez simplement "show tables"; dans mysql pour extraire la liste – Evgeny