Усечь mediawiki
Вопрос
Я работаю с API mediawiki (например, http://en.wikipedia.org/w/api.php) и я хотел бы иметь возможность "усекать" таблицы mysql, чтобы сбросить локальную установку, сохранив при этом некоторые таблицы (пользователи, ? ...).Какими будут SQL - запросы ?
Я бы сказал:настроить все таблицы, кроме ${PREFIX}_user, и обновить ${PREFIX}_user, установив user_editcount=0 ?
Есть какие-нибудь другие (более безопасные) предложения?
Решение
Правильный ответ был опубликован в списке рассылки 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
, objectcache
, 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
к этому списку, к усечение кэшей, связанных с сообщениями.
Также:Не забудьте удалить файлы из папки с изображениями, если будете обрезать таблицу изображений .В противном случае они будут не синхронизированы, и у вас могут возникнуть проблемы с загрузкой некоторых изображений.
Другие советы
получить список таблиц из вашей базы данных:
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