Вопрос

Я работаю с 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top