我一直在研究Django Web應用程序的離線版本,並且經常刪除某個ModelX的模型實例。刪除所有實例後,Django模型實例主鍵不會重置爲1
我已經從管理頁面做了這個,並沒有遇到任何問題。該模型只有兩個字段:名稱和順序,與其他模型沒有其他關係。
爲新實例提供了下一個可用的pk,這是合理的,當我刪除所有實例時,添加一個新實例會得到一個pk = 1,這是我期望的。
將代碼在線移動到我的實際數據庫我注意到情況並非如此。我需要更改模型實例,所以我刪除它們,但令我驚訝的是主鍵不斷增加而不重置爲1.
使用Django API進入數據庫我已檢查並且舊實例消失,但即使添加新實例也會產生一個主鍵,該主鍵提取最後一次刪除實例的位置,而不是1.
想知道是否有人知道這裏可能存在什麼問題。
我不明白爲什麼離線版本的行爲方式與在線版本不一樣。 – pj2452
使用需要在數據庫中產生某些測試數據的單元測試會是一種情況,除非您想要在每次測試中生成一個新表。 – Mehdi
您是否在開發中使用與生產中相同的數據庫?特別是sqlite釋放被刪除對象的鍵以供重用(不幸的是,如果你依賴於鍵的唯一性)。 https://sqlite.org/autoinc.html – DylanYoung