题
我正在使用mediawiki API(例如 http://en.wikipedia.org /w/api.php )我希望能够“截断”mysql表,以便在保留一些表(用户,?...)的同时重置本地安装。 什么是SQL查询?
我会说:tuncate所有表但$ {PREFIX} _user并更新$ {PREFIX} _user set 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
,< code> 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