Kürzt mediawiki
Frage
Ich arbeite mit der Mediawiki-API (zB http://en.wikipedia.org /w/api.php ), und ich möchte in der Lage sein zu ‚truncate‘ die mySQL-Tabellen, um die lokale Installation zurückgesetzt, während einige Tabellen (Benutzer halten,? ...). Was würde die SQL-Abfragen werden?
Ich würde sagen: tuncate alle Tabellen aber $ {PREFIX} _USER und Update $ {PREFIX} _USER gesetzt user_editcount = 0
?Jede andere (sicherer) Vorschlag?
Lösung
Die richtige Antwort auf der MediaWiki-Mailingliste gepostet: siehe http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html
Nach diesem Post, ist es wahrscheinlich in Ordnung ist user_newtalk
, page
, revision
, text
trunkieren,
archive
, pagelinks
, templatelinks
, imagelinks
, categorylinks
, category
, externallinks
, langlinks
, hitcounter
, watchlist
, image
, oldimage
, filearchive
, recentchanges
, searchindex
, interwiki
, querycache
, objectcache
, log_search
, trackbacks
, job
, querycache_info
, redirect
, querycachetwo
, page_restrictions
, protected_titles
, page_props
, change_tags
, tag_summary
, valid_tag
, l10n_cache
.
Bei neueren Versionen, fügen msg_resource
und msg_resource_list
zu dieser Liste, auf truncate Nachricht verwandte Caches .
Also: Denken Sie daran, die Dateien im Bildordner zu löschen, wenn das Kürzen Tafel. Sonst werden sie nicht synchron sein, und man könnte Schwierigkeiten haben, ein paar Bilder zu.
Andere Tipps
get Liste der Tabellen aus der Datenbank:
echo "show tables;" | mysql -u user_name -p db_name > tables
bestimmen, welche Tabellen Sie trunkieren wollen, dann ein SQL-Skript erstellen
TRUNCATE TABLE a;
TRUNCATE TABLE b;
update <prefix>user set user_editcount=0;
dann durch den Client ausgeführt werden:
mysql -u user_name -p database_name < truncate-all.sql