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)?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top