nia*_*ian 1 ruby ruby-on-rails rails-migrations
迁移数据库时,我犯了一个拼写错误。
我想通过运行生成一个脚手架:
rails generate scaffold Micropost context:text user_id:integer
rails db:migrate
Run Code Online (Sandbox Code Playgroud)
尽管我在运行时遗漏了冒号,但犯了一个错误:
rails generate scaffold Micropost context:text user_id integer
rails db:migrate
Run Code Online (Sandbox Code Playgroud)
我想撤消这次迁移,该怎么做?(我正在使用 Rails 5.0.0.1)
当我运行时rails db:migrate,我收到以下错误:
SQLite3::SQLException: table "microposts" already exists:
Run Code Online (Sandbox Code Playgroud)
当我运行时rails db:migrate:status,我得到以下输出:
Status Migration ID Migration Name
up 20161024021157 Create users
up 20161024025545 ********** NO FILE **********
down 20161024025805 Create microposts
Run Code Online (Sandbox Code Playgroud)
我尝试使用rails db:migrate:down VERSION=20161024025805. 命令行中没有显示任何消息。然后我就跑了rails db:migrate。错误是一样的。
rails db:rollback将简单地回滚一个 迁移,我相信这就是您正在寻找的
对于更具体的回滚,您可以运行rails db:migrate:down VERSION=numberofversion
将 替换numberofversion为生成的迁移文件的版本号,例如:
rails db:migrate:down VERSION=1843652238
Run Code Online (Sandbox Code Playgroud)
编辑:
由于您收到表已存在的错误Microposts,因此必须按照以下步骤删除该表:
rails generate migration DropMicroposts/db/migrate folder并找到您刚刚创建的最新迁移文件在该文件中粘贴以下内容:
class DropMicroposts < ActiveRecord::Migration
def up
drop_table :microposts
end
end
Run Code Online (Sandbox Code Playgroud)跑步rails db:migrate
rails generate scaffold Micropost context:text user_id:integer rails db:migrate