2012-12-15 61 views
0

在示例rails應用程序中使用sqlite數據庫。從我的用戶表中,我已使用User.delete_all清除了所有記錄。但是現在每當我在表格中使用User.create插入一條新記錄時,id的值就會比表中最後一條記錄的id值多一個。例如,如果我的表有5條記錄,我清除了所有,那麼當我做User.create,它從id 6開始。 有什麼辦法可以使id從1開始?重置Rails中sqlite數據庫表中的id字段

謝謝你

+0

我相信你會做一個耙分貝運行在軌道控制檯下面重置ID列,以1:復位或類似清除指數。或者,你可以使用這個:http://www.sqlite.org/lang_reindex.html。但是,爲什麼你需要這樣做? – simonmorley

+0

通過在rails控制檯上運行以下內容來修復:ActiveRecord :: Base.connection.execute(「從sqlite_sequence刪除其中name ='users'」) – Jim

回答

1

你似乎有id列自動增加打開。 Sqlite在名爲sqlite_sequence的內部表中處理這些值。你可以通過查詢重置爲特定的啓用自動遞增表的ID:

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

然而,這不是一個好主意,因爲自動增量功能專用的方式,用戶不影響其算法中使用。理想情況下,您不應該關心您的ID的實際價值,而只是將其視爲記錄的唯一標識符。

+0

感謝您的回覆:)。另一種方法是從rails控制檯使用活動記錄API,這正是我所做的。 – Jim

相關問題