テーブル名やカラムを変更したくなって
まだローカルでしか変更していないときに
わざわざ修正マイグレーションをかくと不要なマイグレーションが増えるし手間もかかるので
テーブルをドロップしてマイグレーションを再実行する手順を覚えたいです
マイグレーション履歴は MySQL 自体がもっていると認識してるんですが
テーブル一覧をみてもそれらしいテーブルが見当たらずどこに保存されているのかよくわかりません
マイグレーションファイルをすでに変更してしまっている場合 rake db:rollback も redo も使えないので
どうすれば履歴を汚さずに書き換えたマイグレーションを再実行できるでしょうか
追記
今回やりたいことは
create_table table_a ...
のようなマイグレーションを
create_table table_b ...
のように書き換えてしまった後 table_a を手動で drop してしまった状態で
table_b を作るマイグレーションを再度走らせたいというものです
手動で table_a を消してなければ rollback や redo が使えたみたいなのですが
マイグレーションの down 実行時に存在しないテーブルを消そうとしてエラーになってしまいます
いつもは少し前のダンプを流し込んでから再度 rake db:migrate を実行していますが
ダンプ以降に追加したレコードがなくなってしまうのと
テーブルやレコードを1つ消すのはUI上からほんの数秒で簡単にできるので
table_a と MySQL 上に保存されている履歴?を消せば再実行してすぐ戻せるのかなと思っているのですが
(認識が間違ってたらすみません)
いずれにしろ1度実行したマイグレーションを再実行しないためにどこかに覚えてるはずで
いつもSQLをダンプするだけでマイグレーションが走るのでおそらくSQL上にあると思ってるのですが
rake db:migrate:status をやるとでてくるリストが
SQL上にあるのかどこかの設定ファイルにかかれてるのかわかればそれを手動で編集したほうが早いかなと思っていて
マイグレーション 履歴 テーブル rails
とか適当なワードで検索しても実態がどこにあるのかわからないので履歴を手動で消す方法を覚えたいです
追記
デプロイしていないローカル内であること前提でmigration内容を修正する本来の手順は
rollback してから書き換えて再実行すべきだったんでしょうか
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/02/27 03:06