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