Ruby on rails 什么可能导致对象\u ID中的跳过

Ruby on rails 什么可能导致对象\u ID中的跳过,ruby-on-rails,database,rake,Ruby On Rails,Database,Rake,在无意中用Fixture测试数据(仅2行/表)覆盖了约100行/表的开发数据库后,在每个模型中创建的下一个新对象从id=897600开始 这是什么原因造成的?这是否意味着我创建了897500个在数据库中不可见的测试对象?我不确定这是否是我应该关心的问题,但如果有任何反馈,我将不胜感激 我正在使用PostgreSQL 9.1和Rails 3.2 请让我知道什么额外的信息将有助于澄清我的问题。谢谢 Rails fixture使用fixture键的散列来确定记录ids。这就允许了所有的功能(这个特性引

在无意中用Fixture测试数据(仅2行/表)覆盖了约100行/表的开发数据库后,在每个模型中创建的下一个新对象从id=897600开始

这是什么原因造成的?这是否意味着我创建了897500个在数据库中不可见的测试对象?我不确定这是否是我应该关心的问题,但如果有任何反馈,我将不胜感激

我正在使用PostgreSQL 9.1和Rails 3.2


请让我知道什么额外的信息将有助于澄清我的问题。谢谢

Rails fixture使用fixture键的散列来确定记录
id
s。这就允许了所有的功能(这个特性引入时的一些旧文章)。为了让您的测试运行,在测试示例中创建的记录不需要与这些散列id冲突,因此
ActiveRecord
为每个与夹具接触的表将PK序列重置为
max(id)+1
。下面是您的PKs如何获得最多像
897600

Rails装置使用装置键的散列来确定记录
id
s这样的数字。这就允许了所有的功能(这个特性引入时的一些旧文章)。为了让您的测试运行,在测试示例中创建的记录不需要与这些散列id冲突,因此
ActiveRecord
为每个与夹具接触的表将PK序列重置为
max(id)+1
。以下是您的PKs如何获得像
897600

谢谢@Serge这样的数字。所以我知道这是测试数据库中的预期行为。我想这在测试数据库中不是问题,因为id没有被可视化引用?因此,在我的开发数据库中重置id号的唯一方法是重新开始使用rake db:reset?这在测试数据库中不是问题,因为散列是一致的。再运行一次测试套件不会导致2倍的ID流量。至于开发,yes
db:reset
是最简单的方法。困难的方法是:手动清洁夹具,然后发出
ActiveRecord::Base.connection.reset\u pk\u序列!(表格名称)
在每张表格上。太好了。谢谢,这太完美了!谢谢@Serge。所以我知道这是测试数据库中的预期行为。我想这在测试数据库中不是问题,因为id没有被可视化引用?因此,在我的开发数据库中重置id号的唯一方法是重新开始使用rake db:reset?这在测试数据库中不是问题,因为散列是一致的。再运行一次测试套件不会导致2倍的ID流量。至于开发,yes
db:reset
是最简单的方法。困难的方法是:手动清洁夹具,然后发出
ActiveRecord::Base.connection.reset\u pk\u序列!(表格名称)
在每张表格上。太好了。谢谢,这太完美了!