truncar MediaWiki
Pergunta
Eu estou trabalhando com a API MediaWiki (por exemplo http://en.wikipedia.org /w/api.php ) e eu gostaria de ser capaz de 'truncar' as tabelas do MySQL, a fim de repor a instalação local, mantendo algumas tabelas (usuários,? ...). Quais seriam as consultas SQL?
Eu diria: tuncate todas as tabelas, mas $ {PREFIX} _USER e atualização $ {PREFIX} set _USER user_editcount = 0
?Qualquer outra sugestão (mais seguro)?
Solução
A resposta correta foi postada na lista de discussão MediaWiki: veja http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html
De acordo com esse post, é provavelmente ok para truncar 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
.
Nas versões mais recentes, msg_resource
add e msg_resource_list
a essa lista, a truncar mensagem relacionada caches .
Além disso: Lembre-se de excluir os arquivos na pasta de imagem, se truncar o mesa imagem. Caso contrário, eles vão estar fora de sincronia, e você pode ter upload de problemas algumas imagens.
Outras dicas
obter a lista de tabelas do banco de dados:
echo "show tables;" | mysql -u user_name -p db_name > tables
determinar quais as tabelas que você deseja truncar, em seguida, criar um script sql
TRUNCATE TABLE a;
TRUNCATE TABLE b;
update <prefix>user set user_editcount=0;
, em seguida, executá-lo através do cliente:
mysql -u user_name -p database_name < truncate-all.sql