新建一篇文章,ID 从 12043 直接跳到 12089,中间四十多个号不知道去哪了。每改一次标题保存,下一次的 ID 又往后跳一截。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,每次保存都会往 wp_posts 插一条 post_type 为 revision 的记录,它和正文共用同一张表和同一个自增序列。修订越多,ID 消耗越快,删掉修订也不会把号还回来。

「修订占用 post ID」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

SELECT COUNT(*) AS revisions FROM wp_posts
WHERE post_type = 'revision';
SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wp_posts';

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,在 wp-config.php 里把 WP_POST_REVISIONS 设成 3,先止住增量;按 post_parent 删除历史修订,保留最近三条,别直接清空整张表;业务里不要拿文章 ID 当对外编号,改用自定义字段或 GUID。

最后用这个标准收尾,保存几次后新文章 ID 只增长个位数,修订条数稳定在每篇三条以内。

作者 9823189