2009-10-21 2 views
0

Я работаю с API-интерфейсом mediawiki (например, http://en.wikipedia.org/w/api.php), и я хотел бы иметь возможность «обрезать» таблицы mysql, чтобы сбросить локальную установку, сохранив некоторые таблицы (пользователи,? ...) , Каковы будут SQL-запросы?Truncate mediawiki

Я бы сказал: tuncate все таблицы, но $ {PREFIX} _user и обновление $ {PREFIX} _user set user_editcount = 0?

Любое другое (безопасное) предложение?

ответ

2

Правильный ответ был опубликован в списке рассылки MediaWiki: см. http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html

Согласно этому сообщению, это, вероятно, хорошо укоротить user_newtalk, page, revision, text, archive, pagelinks, templatelinks, imagelinks, categorylinks, category, externallinks, langlinks, hitcounter, watchlist, image, oldimage, filearchive , recentchanges, searchindex, interwiki, querycache, , log_search, trackbacks, job , querycache_info, redirect, querycachetwo, page_restrictions, protected_titles, page_props, change_tags, tag_summary, valid_tag, l10n_cache.

В более поздних версиях добавьте msg_resource и msg_resource_list в этот список, чтобы truncate message related caches.

Также: Не забудьте удалить файлы в папке с изображением, если обрезать таблицу изображений . В противном случае они будут не синхронизированы, и у вас могут возникнуть проблемы с загрузкой некоторых изображений.

0

получить список таблиц из базы данных:

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

определить, какие таблицы вы хотите укоротить, а затем создать SQL скрипт

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

затем запустить его с помощью клиента:

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

Ваш ответ не говорит мне *, какие таблицы медиавичей должны быть усечены. – Pierre

+0

просто используйте «show tables»; в mysql извлечь список – Evgeny