今天用PBOOTCMS给客户建站,发现了一个很奇葩的问题
客户的新闻资讯文章最后一条是8 但是新增文章之后 他的文章ID变成了569
如下图:

正常情况来说,新增文章,他应该默认递增,原来最大的文章ID是8,那么新增的文章ID应该是9.
然后开始查询问题所在。疑似问题如下:
1、数据库ay_content的表递增出现问题,修改索引,和自动递增。(无果)
2、后台或者其他表存在最大的递增值568(无果)
分析问题:
一般来说,也只会有上面两个原因造成,但是均无果。后来又尝试重新删数据,增加新闻,还是从569递增。
后来就怀疑是不是存在569这个值,通过数据库查询发现没有。
图片如下:

再后来换了下思路
那569没有,会不会最大值是568,一查还真查出来了问题

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

这才发现问题所在,sqlite_sequence 是 SQLite 数据库中用于管理自增字段(AUTOINCREMENT)的系统表,核心作用是记录每个开启自增的表的「最后使用的自增主键值」,确保自增字段(通常是 INTEGER PRIMARY KEY AUTOINCREMENT)能持续递增、不重复。
翻译成白话就是。这里的值是多少,那么他就会从多少开始递增,比如这里是568 那么再新增数据就是569开始,就算你在数据库强制改了ID值,你新增还是会从569开始。
然后开始写语句处理这个问题:语句如下
UPDATE sqlite_sequence SET seq = 9 WHERE name = 'ay_content';
意思让他默认递增值为9,然后执行保存。解决,效果如下

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