Reputation: 3742
When migrating the database, I made a spelling mistake.
I want to generate a scaffold by running:
rails generate scaffold Micropost context:text user_id:integer
rails db:migrate
Although I made a mistake by leaving out the colon when I ran:
rails generate scaffold Micropost context:text user_id integer
rails db:migrate
I want to undo this migration, how to do it?
(I'm using Rails 5.0.0.1
)
When I run rails db:migrate
, I get an error of:
SQLite3::SQLException: table "microposts" already exists:
When I run rails db:migrate:status
, I get the following output:
Status Migration ID Migration Name
up 20161024021157 Create users
up 20161024025545 ********** NO FILE **********
down 20161024025805 Create microposts
I tried to use rails db:migrate:down VERSION=20161024025805
. There wasn't any message showing in the command line. Then I ran rails db:migrate
. The error is the same.
Upvotes: 1
Views: 3040
Reputation: 4239
rails db:rollback
will simply rollback one migration which I believe is what you are looking for
For a more specific rollback, you can run rails db:migrate:down VERSION=numberofversion
Replace the numberofversion
with the version number of the migration file generated, for example:
rails db:migrate:down VERSION=1843652238
Edit:
Since you are getting the error that the Microposts
table already exists, you must follow these steps to remove the table:
rails generate migration DropMicroposts
/db/migrate folder
and find the latest migration file you just created In that file paste this:
class DropMicroposts < ActiveRecord::Migration
def up
drop_table :microposts
end
end
run rails db:migrate
rails generate scaffold Micropost context:text user_id:integer
rails db:migrate
Upvotes: 5