这是一个奇怪的问题,在其他一些帖子中部分涵盖,但没有直接回答。我们在schema_migrations
数据库中有一些迁移版本号,这些版本号在几年前被一个火腿插件插入了那里:
自那个命运的日子以来,我们的架构看起来像这样:
ActiveRecord::Schema.define(:version => 20090409010513002) do
由于迁移版本号为long
,因此Rails将假设我们处于未来大约6千万年创建的架构版本。
现在,人们会认为,这是安全的,因为migration documentation表示将在未在给定数据库上运行的所有迁移上调用up方法。这似乎是这种情况,因为我们在过去3年中一直在创建迁移并成功运行它们。似乎Rails说“你正式迁移到版本20090409010513002,但还没有运行迁移(2012年的某些东西),所以我将运行它并将其添加到数据库。
我的问题是双重的:
答案 0 :(得分:0)
对于第一个问题,我能想到的一个危险是你的db/schema.rb
文件对于弄清楚它是否与数据库中的内容相对应是没有用的。
对于第二个问题 - 我假设屏幕截图来自您的生产数据库。如果您在开发环境中执行schema_migrations
,您会在rake db:setup
表中看到什么?如果开发中的schema_migrations
表没有这两个虚假条目,我认为从生产数据库中删除它们可能是安全的。