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

时间:2014-12-06 作者:Mark Waters

我经营Wordpress多年,有大约26000篇帖子。

有时我的帖子ID超过了32位整数,现在我被锁定在64位系统上使用Wordpress。

我看到的帖子ID为4863166253。

我想把我的主机切换到一个低功耗的服务器,比如32位的树莓pi。

有没有办法重置Post ID,使其都低于20亿?

你可以阅读我的Wordpress bug报告here

谢谢

1 个回复
SO网友:gmazzap

如果我不得不面对这个问题,这个答案就是我解决问题的方法,它意味着不是答案,而是可能性之一。

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

如果你有26000篇帖子,但是帖子id像4863166253,那么有无数的id没有被使用。

要解决此问题,您需要:

步骤1删除未使用的post ID。(垃圾帖子,修订版)
  • 删除了孤立的帖子元条目
  • 删除了孤立的分类关系条目
    • 该范围有插件,但可以使用简单的原始SQL查询来完成。

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

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

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

      步骤3

      Set the AUTO_INCREMENT index 在post表格上,以post计数+1。

      完成

      在此过程结束时,较高的post id应该很容易在32位整数限制内。

      防止再次达到post限制(请参阅Codex).

      移动较旧的帖子(2年?5年?)多站点环境中的单独博客,例如。site1-archive.example.com 对于中的帖子site1.example.com.

      这可以使用带有日期范围选项的WordPress exporter来完成。

      如果您计划这样做,那么在重置帖子id之前(上面的第2步)这样做是否更好,这样两个博客都可以有更低的帖子id。

      当然,在这之后,您还应该制定一种方法,将归档的URL重定向到新的URL。

    结束

    相关推荐

    WP_USE_EXT_MYSQL

    下面是源代码中wpdb类的构造函数。根据谷歌搜索,这一名称最近已从USE\\u EXT\\u MYSQL重命名。然而,我在源代码中找不到任何定义了常量的地方。function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { register_shutdown_function( array( $this, \'__destruct\' ) ); if ( WP_DEBUG && WP_