xengineer’s diary

結果、メモ的な内容になっています。

db:migrateを最初からやり直したい!

いつも通り、migrationファイルを作って、カラム追加しようとしたら、 こんなエラーに見舞われてしまった。

== 20150530030714 AddDueDateToOrders: migrating ===============================
-- add_column(:orders, :due_date, :date)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: duplicate column name: due_date: ALTER TABLE "orders" ADD "due_date" date/Users/nemoto_hideaki/work/root4/branch/*******/db/migrate/20150530030714_add_due_date_to_orders.rb:3:in `change'
-e:1:in `<main>'
ActiveRecord::StatementInvalid: SQLite3::SQLException: duplicate column name: due_date: ALTER TABLE "orders" ADD "due_date" date
/Users/nemoto_hideaki/work/root4/branch/*******/db/migrate/20150530030714_add_due_date_to_orders.rb:3:in `change'
-e:1:in `<main>'
SQLite3::SQLException: duplicate column name: due_date
/Users/nemoto_hideaki/work/root4/branch/*******/db/migrate/20150530030714_add_due_date_to_orders.rb:3:in `change'
-e:1:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

duplicate column name・・・schema.rb見る限り同じカラムないんだけどな・・・ 何回やっても同じなので(当たり前)、最初から migration しなおしてみた。 いつもコマンド忘れるのでメモ。

$ rake db:migrate:reset
$ rake db:reset

ちなみに、

  • rake db:migrate:reset
    • db/migrate/*.rb を古い順にあててくれるらしい
  • rake db:reset
    • db/schema.rb でdbを再構築してくれるらしい

今回は、schema.rb に追加したいカラムが入ってないので、rake db:migrate:resetを使いました。 で、成功したとさ。ちゃんちゃん。

↓の方の記事をオマージュ。 rake db:reset と rake db:migrate:reset の違い | EasyRamble