迁移数据库时,我拼错了。
我想通过运行生成脚手架:
rails generate scaffold Micropost context:text user_id:integer
rails db:migrate
虽然我在跑步时遗漏了冒号而犯了错误:
rails generate scaffold Micropost context:text user_id integer
rails db:migrate
我想撤消此迁移,该怎么办?
(我正在使用Rails 5.0.0.1
)
当我运行rails db:migrate
时,出现错误:
SQLite3::SQLException: table "microposts" already exists:
当我运行rails db:migrate:status
时,我得到以下输出:
Status Migration ID Migration Name
up 20161024021157 Create users
up 20161024025545 ********** NO FILE **********
down 20161024025805 Create microposts
我尝试使用rails db:migrate:down VERSION=20161024025805
。命令行中没有显示任何消息。然后我跑了rails db:migrate
。错误是一样的。
答案 0 :(得分:2)
rails db:rollback
只会回滚一个 migration我相信你正在寻找
要进行更具体的回滚,您可以运行rails db:migrate:down VERSION=numberofversion
将numberofversion
替换为生成的迁移文件的版本号,例如:
rails db:migrate:down VERSION=1843652238
修改强>
由于您收到Microposts
表已存在的错误,因此您必须按照以下步骤删除该表:
rails generate migration DropMicroposts
/db/migrate folder
,找到刚刚创建的最新迁移文件在该文件中粘贴:
class DropMicroposts < ActiveRecord::Migration
def up
drop_table :microposts
end
end
运行rails db:migrate
rails generate scaffold Micropost context:text user_id:integer
rails db:migrate