ruby-on-rails - 如何在rails 6上重置ruby中的主键ID?
问题描述
我使用的是 rails 6.0.3.4,每次删除用户时,我都会尝试重置表“用户”的主键。
我尝试进入 rails 控制台并使用命令
ActiveRecord:: Base. connection. reset_pk_sequence!('users')
但我得到了错误
Traceback (most recent call last):
1: from (irb):1
NoMethodError (undefined method `reset_pk_sequence!' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x000000000af92360>)
Did you mean? reset_sequence!
我也试过
ActiveRecord:: Base. connection. reset_sequence!('users')
但我明白了
Traceback (most recent call last):
2: from (irb):1
1: from (irb):2:in `rescue in irb_binding'
ArgumentError (wrong number of arguments (given 1, expected 2..3))
在我阅读的每篇文章中,该命令reset_pk_sequence!
似乎都有效,但对我来说却没有。
有什么办法可以重置我的表用户的主键?
提前致谢。
解决方案
对于 PostgreSQL,该方法确实存在(从 Rails 6.0.0 开始):
ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#reset_pk_sequence!
请注意,您使用的是 SQLite:
#<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x000000000af92360>
所以你可用的方法在这里: https ://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SQLite3Adapter.html
更重要的是,您不应该仅仅因为您删除了一个用户就重置您的表格 ID。即使在您删除用户之后,数据库也可以毫无问题地处理增加 ID。
我很难想出一个在删除记录后需要重置 Db Id 的用例。
如果你真的想这样做: Reset the id field in a table in a sqlite db in Rails