我正在使用mediawiki API (例如http://en.wikipedia.org/w/api.php),我希望能够‘截断’mysql表,以便在保留一些表(用户等)的同时重置本地安装。SQL查询是什么?
我会说:优化除${PREFIX}_user之外的所有表,并更新${PREFIX}_user集合user_editcount=0?
还有其他(更安全的)建议吗?
发布于 2010-01-10 21:46:30
正确的答案发布在MediaWiki邮件列表上:请参阅http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html
根据该帖子,可能可以截断user_newtalk、page、revision、text、archive、pagelinks、templatelinks、imagelinks、categorylinks、D10、D11、D12、D13、D14、D15、D16、D17、D18、D19、D20、D21、D22、D23、D24、D25、D26、D27、D28、D29、D30page_props、change_tags、tag_summary、valid_tag、l10n_cache。
在更新的版本中,将msg_resource和msg_resource_list添加到该列表的truncate message related caches中。
另外:如果截断image表,请记住删除image文件夹中的文件。否则它们将不同步,并且您可能无法上载一些图像。
发布于 2009-11-17 02:54:53
从数据库中获取表列表:
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.sqlhttps://stackoverflow.com/questions/1603681
复制相似问题