Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails迁移中不正确的版本号有多安全?_Ruby On Rails_Version_Rails Migrations - Fatal编程技术网

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年的某个版本),所以我将运行它并将其添加到数据库中

我的问题有两个方面:

  • 现状是否存在任何隐患?事情似乎进展顺利,但我想知道他们会继续这样做
  • 由于那些超长迁移号实际上没有附加迁移文件(有一个20090409010513的文件,但001或002版本都没有),因此删除这些行,从而让Rails实现真正的最新迁移有什么害处吗

  • 对于第一个问题,我能想到的一个危险是,您的
    db/schema.rb
    文件在判断它是否对应于数据库中的内容时没有那么有用

    对于第二个问题-我假设屏幕截图来自您的生产数据库。如果在开发环境中执行
    rake db:setup
    ,您会在
    schema\u migrations
    表中看到什么?如果开发中的
    schema\u migrations
    表没有这两个伪造条目,我认为删除可能是安全的从生产数据库中删除它们