我想从我的应用程序中删除迁移。
我有一个迁移文件20141105030942_removedate_fromexpense.rb
迁移的类文件是
class RemovedateFromexpense < ActiveRecord::Migration
def change
remove_column :expenses, :date, :date
end
end
当我发出这个命令时:
rake db:migrate:down VERSION=20141105030942
我收到以下错误:
== 20141105030942 RemovedateFromexpense: reverting ============================
-- add_column(:expenses, :date, :date)
rake aborted!
StandardError: An error has occurred, this migration was canceled:
SQLite3::SQLException: duplicate column name: date: ALTER TABLE "expenses" ADD "date" date/home/sumyvps/.rvm/gems/ruby-1.9.3-p545@railstutorial_rails_4_0/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'
db:migrate:status for migration file is as below
up 20141105030942 Removedate fromexpense
有谁知道为什么会这样?
答案 0 :(得分:0)
常见任务是回滚上次迁移。例如,如果您在其中犯了错误并希望纠正它。您可以运行以下命令,而不是跟踪与之前迁移相关联的版本号:
rake db:rollback
这将通过还原更改方法或运行down方法来回滚最新的迁移。如果需要撤消多次迁移,可以提供STEP参数:
rake db:rollback STEP=3
首次运行:
rails generate migration RemoveDateFromExpense date:date
然后rake db:migrate
希望这有帮助!
答案 1 :(得分:0)
您无需在迁移文件中指定列类型。只需表的名称和列足以从表中删除列。
将您的迁移文件编辑为:
class RemovedateFromexpense < ActiveRecord::Migration
def change
remove_column :expenses, :date
end
end
然后运行:
rake db:migrate
这应该做的工作。