【问题标题】:Truncate mediawiki截断媒体维基
【发布时间】:2009-10-21 21:12:20
【问题描述】:

我正在使用 mediawiki API(例如http://en.wikipedia.org/w/api.php),我希望能够“截断”mysql 表,以便在保留一些表(用户、?...)的同时重置本地安装. SQL 查询是什么?

我会说:调整除 ${PREFIX}_user 之外的所有表并更新 ${PREFIX}_user 设置 user_editcount=0 吗?

还有其他(更安全的)建议吗?

【问题讨论】:

    标签: mysql api mediawiki wikipedia


    【解决方案1】:

    正确答案已发布在 MediaWiki 邮件列表中:请参阅 http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html

    根据那篇帖子,截断user_newtalkpagerevisiontext可能是可以的, archive, pagelinks, templatelinks, imagelinks, categorylinks, category, externallinks, langlinks, hitcounter, watchlist, image, oldimage, @987654339 @,recentchanges,searchindex,interwiki,querycache,objectcache,log_search,trackbacks,job,querycache_info,redirect,redirect,redirect,@9876 protected_titles, page_props, change_tags, tag_summary, valid_tag, l10n_cache.

    在更新的版本中,将msg_resourcemsg_resource_list 添加到该列表中,添加到truncate message related caches

    另外:记得删除图像文件夹中的文件,如果截断 图像表。否则它们将不同步,并且您可能无法上传某些图片。

    【讨论】:

      【解决方案2】:

      从您的数据库中获取表列表:

      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
      

      【讨论】:

      • 您的回答并没有告诉我应该截断哪些 个 mediawiki 表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多