我一直在研究Django Web应用程序的离线版本,并且经常删除某个ModelX的模型实例。删除所有实例后,Django模型实例主键不会重置为1
我已经从管理页面做了这个,并没有遇到任何问题。该模型只有两个字段:名称和顺序,与其他模型没有其他关系。
为新实例提供了下一个可用的pk,这是合理的,当我删除所有实例时,添加一个新实例会得到一个pk = 1,这是我期望的。
将代码在线移动到我的实际数据库我注意到情况并非如此。我需要更改模型实例,所以我删除它们,但令我惊讶的是主键不断增加而不重置为1.
使用Django API进入数据库我已检查并且旧实例消失,但即使添加新实例也会产生一个主键,该主键提取最后一次删除实例的位置,而不是1.
想知道是否有人知道这里可能存在什么问题。
我不明白为什么离线版本的行为方式与在线版本不一样。 – pj2452
使用需要在数据库中产生某些测试数据的单元测试会是一种情况,除非您想要在每次测试中生成一个新表。 – Mehdi
您是否在开发中使用与生产中相同的数据库?特别是sqlite释放被删除对象的键以供重用(不幸的是,如果你依赖于键的唯一性)。 https://sqlite.org/autoinc.html – DylanYoung