How do I rollback a database migration and then update it
I have added a column ( t.time "usual_start_time") to an exisitng table called Areas. (create_table "areas",)
create_table "areas", force: :cascade do |t|
t.string "location", limit: 255
t.boolean "active", default: false
t.string "twitter_name", limit: 255
t.string "twitter_url", limit: 255
t.string "facebook_url", limit: 255
** t.time "usual_start_time"**
after creating the migiration i forgot to add a default time of 6:45 how do i rollback and then change the column so it shows 646 as the default time. I think its db:rollback and then do i have to add the column again with the default time e.g default: "6.45" (as its a time (t.time)
Yes, you can simply do
rails db:rollback or (
rake db:rollback if rails < 5) to rollback the latest migration. And make changes to the migration as you like.
But note that if you already (git) pushed the faulty migration to a shared repository or deployed, you should make an additional migration.
thanks for getting back ( its not been deployed but have pushed via git to a shared repo)
so I have done rails db:rollback
== 20170120123129 AddUsualStartTimeToAreas: reverting =========================
-- remove_column(:areas, :usual_start_time, :time)
== 20170120123129 AddUsualStartTimeToAreas: reverted (0.5422s) ================
and it has been removed from the areas table
can i now delete the incorrect migration from the db file which is below
class AddUsualStartTimeToAreas < ActiveRecord::Migration def change add_column :areas, :usual_start_time, :time end end
and then create a new migration again but with the default time as 6:45 ?
or can i just update the incorrect db file and then do rake db:migrate
so it would be
add_column :areas, :usual_start_time, :time, default: '6.45'