Rails 5.0.0.1中如何撤销rails db:migrate的操作
How to undo the action of rails db:migrate in Rails 5.0.0.1
迁移数据库时,我犯了一个拼写错误。
我想通过 运行ning 生成脚手架:
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
。错误是一样的。
rails db:rollback
只会回滚 one migration 我相信这就是你要找的
对于更具体的回滚,您可以运行 rails db:migrate:down VERSION=numberofversion
将numberofversion
替换为生成的迁移文件的版本号,例如:
rails db:migrate:down VERSION=1843652238
编辑:
由于您收到 Microposts
table 已经存在的错误,您必须按照以下步骤删除 table:
- 运行
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
迁移数据库时,我犯了一个拼写错误。
我想通过 运行ning 生成脚手架:
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
。错误是一样的。
rails db:rollback
只会回滚 one migration 我相信这就是你要找的
对于更具体的回滚,您可以运行 rails db:migrate:down VERSION=numberofversion
将numberofversion
替换为生成的迁移文件的版本号,例如:
rails db:migrate:down VERSION=1843652238
编辑:
由于您收到 Microposts
table 已经存在的错误,您必须按照以下步骤删除 table:
- 运行
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