Rails Rake MySql自动增量问题w db:fixtures:load

时间:2009-07-31 21:07:44

标签: mysql ruby-on-rails activerecord auto-increment

我正在尝试将一些Rake Fixtures(rake db:fixtures:load)加载到MySql数据库中,我看到一些使用AutoIncrement值的奇怪行为。通常,每次插入都会增加1,这允许我定义/创建测试。 (顺便说一下 - 从脚本中正常创建/插入工作正常)。

然而,当我从灯具加载时,id字段被分配了一个大的随机数,并且在加载之后,表上的autoinc值也是一个大数字(1054583385)。有没有人见过这个?

FWIW这是在Windows XP上使用MySql 5.0(我还使用MySql 5.1进行了测试,发现问题并回滚到5.0)。

其他人看过这个 - 这是一个已知的错误/问题吗?

TIA,

1 个答案:

答案 0 :(得分:1)

这不是导轨固定装置的异常行为。根据设计,它是基于灯具标签的随机散列。请参阅documentation

如果需要,您可以在灯具中明确指定ID。

id: 1

但这真的很重要吗?夹具旨在用于测试。只要关系存在,对象的ID就无关紧要了。

以下是Fixtures类的相关功能:

# Returns a consistent identifier for +label+. This will always 
# be a positive integer, and will always be the same for a given
# label, assuming the same OS, platform, and version of Ruby.
def self.identify(label)
  label.to_s.hash.abs
end