今天用PBOOTCMS给客户建站,发现了一个很奇葩的问题

客户的新闻资讯文章最后一条是8  但是新增文章之后 他的文章ID变成了569

如下图:

image


正常情况来说,新增文章,他应该默认递增,原来最大的文章ID是8,那么新增的文章ID应该是9.

然后开始查询问题所在。疑似问题如下:

1、数据库ay_content的表递增出现问题,修改索引,和自动递增。(无果)

2、后台或者其他表存在最大的递增值568(无果)

分析问题:

一般来说,也只会有上面两个原因造成,但是均无果。后来又尝试重新删数据,增加新闻,还是从569递增。

后来就怀疑是不是存在569这个值,通过数据库查询发现没有。

图片如下:

image


再后来换了下思路

那569没有,会不会最大值是568,一查还真查出来了问题

image

发现了一个不存在的表,因为这是默认隐藏系统表。具体内容如下:

image


这才发现问题所在,sqlite_sequence 是 SQLite 数据库中用于管理自增字段(AUTOINCREMENT)的系统表,核心作用是记录每个开启自增的表的「最后使用的自增主键值」,确保自增字段(通常是 INTEGER PRIMARY KEY AUTOINCREMENT)能持续递增、不重复。

翻译成白话就是。这里的值是多少,那么他就会从多少开始递增,比如这里是568  那么再新增数据就是569开始,就算你在数据库强制改了ID值,你新增还是会从569开始。

然后开始写语句处理这个问题:语句如下

UPDATE sqlite_sequence SET seq = 9 WHERE name = 'ay_content';
全选复制


意思让他默认递增值为9,然后执行保存。解决,效果如下

image

注意:操作前一定要备份数据库

注意:操作前一定要备份数据库