我正在使用mediawiki API(例如http://en.wikipedia.org/w/api.php),我希望能够“截断”mysql表以重置本地安装,同时保留一些表(用户,?.. )。 什么是SQL查询?
我会说:tuncate所有表但$ {PREFIX} _user并更新$ {PREFIX} _user set user_editcount = 0?
还有其他(更安全)的建议吗?
答案 0 :(得分:2)
正确的答案发布在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
,{{ 1}},hitcounter
,watchlist
,image
,oldimage
,filearchive
,recentchanges
,searchindex
,{{1} },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
添加到该列表,truncate message related caches。
另外:如果截断,请记住删除图像文件夹中的文件 图像表。否则它们将不同步,您可能无法上传某些图片。
答案 1 :(得分:0)
获取数据库中的表列表:
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