0

我在示例 Rails 应用程序中使用 sqlite db。从我的用户表中,我已使用User.delete_all. 但是现在每当我在表中插入一条新记录时User.create,id 的开始值比表中最后一条记录的 id 大一。例如,如果我的表有 5 条记录并且我清除了所有记录,那么当我执行 User.create 时,它​​从 id 6 开始。有什么办法可以让 id 再次从 1 开始?

谢谢你

4

2 回答 2

5

类似的问题:如何在 Rails 中重置单个表?. 我们可以在 rails 控制台运行以下命令,将 sqlite 表的 id 列重置为 1

ActiveRecord::Base.connection.execute("DELETE from sqlite_sequence where name = '<table_name>'") 
于 2012-12-15T12:28:24.403 回答
3

您似乎为 id 列启用了自动增量。Sqlite 在名为 的内部表中处理这些值sqlite_sequence。您可以通过以下查询重置特定启用自动增量的表的 id:

UPDATE "sqlite_sequence" SET "seq" = 0 WHERE "name" = $YOURTABLENAME

但是,这不是一个好主意,因为自动增量功能旨在以用户不影响其算法的方式使用。理想情况下,您不应关心 id 的实际值,而应仅将其视为记录的唯一标识符。

于 2012-12-15T12:27:07.083 回答