Ruby on rails Rails迁移中不正确的版本号有多安全?
这里有一个有点奇怪的问题,在其他一些帖子中有部分涉及,但没有直接得到充分的回答。我们的Ruby on rails Rails迁移中不正确的版本号有多安全?,ruby-on-rails,version,rails-migrations,Ruby On Rails,Version,Rails Migrations,这里有一个有点奇怪的问题,在其他一些帖子中有部分涉及,但没有直接得到充分的回答。我们的schema\u migrations数据库中有一些迁移版本号,几年前某个时候,一个笨手笨脚的插件将这些版本号转储到了数据库中: 从那一天起,我们的模式就是这样的: ActiveRecord::Schema.define(:version=>20090409010513002)do 由于迁移版本号是longs,Rails将永远假设我们处于一个模式版本,这个模式版本大约在6000万年后创建 现在,有人会认为,
schema\u migrations
数据库中有一些迁移版本号,几年前某个时候,一个笨手笨脚的插件将这些版本号转储到了数据库中:
从那一天起,我们的模式就是这样的:
ActiveRecord::Schema.define(:version=>20090409010513002)do
由于迁移版本号是long
s,Rails将永远假设我们处于一个模式版本,这个模式版本大约在6000万年后创建
现在,有人会认为,这是安全的,因为声明在所有未在给定数据库上运行的迁移上都会调用up方法。这似乎是事实,因为我们在过去3年中一直在创建迁移并成功运行它们。Rails似乎在说“您已经正式迁移到版本20090409010513002,但还没有运行迁移(2012年的某个版本),所以我将运行它并将其添加到数据库中
我的问题有两个方面:
对于第一个问题,我能想到的一个危险是,您的
db/schema.rb
文件在判断它是否对应于数据库中的内容时没有那么有用
对于第二个问题-我假设屏幕截图来自您的生产数据库。如果在开发环境中执行rake db:setup
,您会在schema\u migrations
表中看到什么?如果开发中的schema\u migrations
表没有这两个伪造条目,我认为删除可能是安全的从生产数据库中删除它们