2013-02-28 20 views
5

我在Rails控制檯中使用Model.delete_all來刪除一個表,但我注意到,這些id號不會重置,它們只是從停止的地方開始。如何刪除表格並使ID從1開始?Model.delete_all並讓ID開始回到1?

這實際上並不是什麼大不了的事情,我只是好奇而已,認爲這樣會更清潔。謝謝!

+1

類似的問題:http://stackoverflow.com/questions/2097052/rails-way-to-reset-seed-on- id-field – 2017-02-14 05:43:41

回答

1

這取決於數據庫。在你的應用程序中,你不應該依賴這樣一個事實,即ID以1開始並順序執行,或者甚至總是增加新記錄。 如果你想要一個新的數據庫,你總是可以做rake db:drop,然後rake db:create

0

一個襯墊

rake db:drop && rake db:create && rake db:migrate 

恢復經營

+0

沒有爲我工作我得到了一個錯誤,即使該https://pastebin.com/raw/S3AgciCn – barlop 2017-12-23 05:45:56

+0

@barlop的第一部分運行這個答案是從幾年前。也許其他答案可以幫助你。另外,確保你的服務器沒有運行。 – AdamT 2017-12-23 12:07:20

5

要刪除只是一個表(與回調),並獲得的ID從1開始,有在軌道做沒有直接的方法。

你可以做

1)Model.destroy_all

2)ActiveRecord::Base.connection.execute("TRUNCATE table_name")

將處理所有你想要的,爲單一的表,如果這就是你所需要的

3

如果你只需要重置ID:

ActiveRecord::Base.connection.execute('ALTER TABLE table_name AUTO_INCREMENT = 1') 
1

如果您使用PostgreSQL可以執行該代碼

ActiveRecord::Base.connection.reset_pk_sequence!(Model.table_name)後,在這裏與答案Model.destroy_all