销毁对已删除迁移的引用
Posted
技术标签:
【中文标题】销毁对已删除迁移的引用【英文标题】:Destroying a reference to a deleted migration 【发布时间】:2013-09-15 20:51:40 【问题描述】:好吧,我犯了一个巨大的错误,并在本地删除了几个迁移(现在我知道得更清楚了)。这已成为一个问题,因为现在当我尝试部署到 heroku 时,我收到以下错误:
Running `rake db:migrate` attached to terminal... up, run.3430
rake aborted!
Multiple migrations have the name CreateScores
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:978:in `validate'
起初这让我感到惊讶,因为我只有一个名为“创建分数”的迁移 - 但后来我注意到了这一点:
Drews-MacBook-Pro:quiz drewwyatt$ rake db:migrate:status
database: /Users/drewwyatt/Sites/Ruby/Rails/quiz/db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20130828212225 Create answers
up 20130828212306 Create questions
up 20130829210727 Create quizzes
up 20130829211302 Remove quiz id from question
up 20130829212349 Create assignments
up 20130829234338 Create employees
up 20130829234541 Add role and active to employee
up 20130830032801 ********** NO FILE **********
up 20130902183412 ********** NO FILE **********
up 20130902183530 Create scores
up 20130902230036 Add indexes to score
up 20130904210011 Create positions
up 20130904212007 Add position to employee
up 20130905161805 Create quiz assignments
我的假设是已删除的迁移之一也被命名为“创建分数”。所以我的问题是,我怎样才能摆脱 2 个已删除的迁移?
【问题讨论】:
请参考***.com/questions/3647685/… 【参考方案1】:回滚到您遇到错误的迁移版本之上。您可以按照下面给出的方式进行操作。
rake db:migrate:down VERSION=20130829234541
如果您的 root/db/migrate 文件夹中存在与该错误相关的任何引用,则删除该引用。
然后再次运行迁移。会好的。
【讨论】:
【参考方案2】:为了一个快速的解决方案,您可以一个一个地迁移每个版本的迁移文件,而不是像一次迁移所有的迁移
rake db:migrate:up VERSION=version_of_the file
请查看此链接:Run a single migration file
【讨论】:
以上是关于销毁对已删除迁移的引用的主要内容,如果未能解决你的问题,请参考以下文章