我在示例 Rails 应用程序中使用 sqlite db。从我的用户表中,我已使用User.delete_all
. 但是现在每当我在表中插入一条新记录时User.create
,id 的开始值比表中最后一条记录的 id 大一。例如,如果我的表有 5 条记录并且我清除了所有记录,那么当我执行 User.create 时,它从 id 6 开始。有什么办法可以让 id 再次从 1 开始?
谢谢你
我在示例 Rails 应用程序中使用 sqlite db。从我的用户表中,我已使用User.delete_all
. 但是现在每当我在表中插入一条新记录时User.create
,id 的开始值比表中最后一条记录的 id 大一。例如,如果我的表有 5 条记录并且我清除了所有记录,那么当我执行 User.create 时,它从 id 6 开始。有什么办法可以让 id 再次从 1 开始?
谢谢你
类似的问题:如何在 Rails 中重置单个表?. 我们可以在 rails 控制台运行以下命令,将 sqlite 表的 id 列重置为 1
ActiveRecord::Base.connection.execute("DELETE from sqlite_sequence where name = '<table_name>'")
您似乎为 id 列启用了自动增量。Sqlite 在名为 的内部表中处理这些值sqlite_sequence
。您可以通过以下查询重置特定启用自动增量的表的 id:
UPDATE "sqlite_sequence" SET "seq" = 0 WHERE "name" = $YOURTABLENAME
但是,这不是一个好主意,因为自动增量功能旨在以用户不影响其算法的方式使用。理想情况下,您不应关心 id 的实际值,而应仅将其视为记录的唯一标识符。