2016-11-10 6 views
0

私はレールプロジェクトの支配権を引き継いだが、私が先導する前に、それはセミテクニカルマネージャーだけで処理されていたが、レールを知っている人ではなかった。現時点では、データベースにテーブルや行を追加する必要があることを認識していました。これを行うには、単純にMySQLを追加し、移行を作成しませんでした。私が最初に引き継ぐとき、私はそれらをローカルに持つことができるように、それらのテーブル/行の移行を追加しました。ステージングとプロダクションの各段階でレールの移行を処理する最良の方法は?

問題は、MySQL経由で手動で追加されたテーブルを持つステージング/プロダクションサーバ上で移行を実行しようとしたときです(マイグレーションを追加して更新済みのテーブル/ローをローカルにクラッシュさせるためです) )。これは問題ではありませんが、今ではまったく新しいテーブルの移行を追加したいと思いますが、テーブルがすでに存在するため古いテーブルがクラッシュするため、この移行は実行されません。

私の知る限り、これを修正する唯一の方法は、テーブルを削除し、私が書いた移行でテーブルを削除し直すことです。私がそれを行うのが不確かな理由は、それらのテーブル内のすべてのデータが失われてしまうことがないからです。テーブルを削除して再追加した後にデータをバックアップして再ロードする方法があるかもしれませんが、これまでに行ったことがないので、どこから開始するのか分からないでしょう。あるいは、MySQLのDBを手作業で更新して私が望む新しいテーブルを追加して、ローカルのマイグレーションを保つこともできますが、それは実際にはハッキーに見えて、それらを使う目的を打ち負かしてしまいます。

だから、どんなアイデアですか?

答えて

2

Railsはすでに実行されている移行を追跡するためにschema_migrationsテーブルを使用します。最後に実行された移行の番号であるversionという1つの列があります。

select * from schema_migrations; 

一つの方法は、すでにデータベースに適用される変更を有する移動番号にこのテーブルを更新することである

関連する問題