I would like to remove/delete a migration file. How would I go about doing that? I know there are similar questions on here but as an update, is there a better way than doing script/destroy?
Also, should I do a db:reset
or db:drop
if I remove/delete a migration?
I usually:
- Perform a
rake db:migrate VERSION=XXX
on all environments, to the version before the one I want to delete.
- Delete the migration file manually.
- If there are pending migrations (i.e., the migration I removed was not the last one), I just perform a new
rake db:migrate
again.
If your application is already on production or staging, it's safer to just write another migration that destroys your table or columns.
Another great reference for migrations is: http://guides.rubyonrails.org/migrations.html
Another way to delete the migration:
$ rails d migration SameMigrationNameAsUsedToGenerate
Use it before rake db:migrate
is executed because changes in database will stay forever :) - or remove changes manually
Run below commands from app's home directory:
rake db:migrate:down VERSION="20140311142212"
(here version is the timestamp prepended by rails when migration was created. This action will revert DB changes due to this migration)
Run "rails destroy migration migration_name"
(migration_name is the one use chose while creating migration. Remove "timestamp_" from your migration file name to get it)
We can also down migration as
rake db:migrate:down VERSION=versionnumber
Refer
Rubyonrailsguide
We can use,
$ rails d migration table_name
Which will delete the migration.
Sometimes I found myself deleting the migration file and then deleting the corresponding entry on the table schema_migrations from the database. Not pretty but it works.
Look at 4.1 Rolling Back
http://guides.rubyonrails.org/migrations.html
$ rake db:rollback
I just had this same problem:
- rails d migration fuu
-this deleted the migration with the last timestamp
- rails d migration fuu
-this deleted the other migration
- use git status to check that is not on the untracked files anymore
- rails g migration fuu
That fixed it for me