将帖子ID重置为小于64位整数


8

我已经运行Wordpress多年了,大约有26000个帖子。

在某些时候,我的帖子ID已经超过了32位整数,现在我只能在64位系统上使用Wordpress。

我看到ID为4863166253的帖子。

我想将主机切换到低功耗服务器,例如32位的rapiberry pi。

有什么方法可以重置帖子ID,使它们都低于20亿个吗?

您可以在此处阅读我的Wordpress错误报告

谢谢。


这是将您带到那的插件之一,我猜是post_2_post,但这只是一个猜测。您需要真正理解为什么会有这么高的数量(没有真正的实时修订版本会带来大量更新,除非再次是创建它们的插件),然后您才能开始计划如何修复它。
马克·卡普伦

Answers:


5

这个答案是,如果我不得不面对它,我会采取解决问题的方式,它的意思是没有答案,但其中一种可能性。

我建议的所有操作都应在数据库备份的开发/本地服务器上运行,而不是在生产环境或原始数据库上运行。

如果您有26,000个帖子,但帖子ID如4,863,166,253,则有数十亿个ID未被使用。

要解决此问题,您需要:

步骤1

  • 删除未使用的帖子ID。(删除的帖子,修订版)
  • 删除的孤儿发布元条目
  • 删除孤儿分类法关系条目

有适用于范围的插件,但可以使用简单的原始SQL查询来完成。

第2步

重置帖子ID,将其更改为从1开始。这可以使用PHP + MySQL的组合来完成:如果您将帖子ID列检索为数组(例如通过$wpdb->get_col()),则数组键(增加1)将是当前ID位于数组值中的帖子。

请注意,帖子ID必须在以下位置进行更改:

  • 发布表
  • 分类关系表
  • 发布元表

我建议您使用分页结果在帖子的子集上而不是在成千上万的行上运行这样的例程。

第三步

AUTO_INCREMENT发布表上索引设置为发布计数+1。

完成了

在此过程结束时,较高的帖子ID应该很容易位于32位整数限制之内。

防止再次达到发布限制

  • 禁用后期修订或限制其数量(请参阅Codex)。

  • 将旧帖子(2岁?5?)到一个单独的博客上多站点环境,比如site1-archive.example.com在帖子site1.example.com

    可以使用带有日期范围选项的WordPress导出程序来完成。

    如果您打算这样做,最好重置帖子ID(上面的步骤2)之前完成,这样两个博客都可以使用较低的帖子ID。

    当然,在那之后,您还应该采用一种方法将归档的帖子网址重定向到新的网址。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.