2017-02-07 5 views
1

ruby​​ on railsグループプロジェクトで作業中に、schema.rbファイルに移行履歴ファイルと一致しないテーブルが2つ見つかりました。意図しないテーブルのスキーマファイルをクリーンアップするrakeコマンドがありますか?railsアプリケーションのスキーマファイルの不要なテーブル

rake -Tからコマンドを試しましたが、スキーマファイルをリメイクできるものが見つかりませんでした。

rake db:dumpスキーマファイルは変更されませんでした。

rake db:schema:dumpまた、スキーマファイルが変更されていないようです。

+0

schema.rbファイルを削除してdb:schema:dumpをもう一度実行してみてください – eiko

+0

@eikoしかし、 'schema.rb'は' db:schema:dump'が生成するデータベースの表現であり、問​​題は浮遊しているということですデータベース内のテーブル。 –

+0

@muistooshort rakeがschema.rbが既に最新であると考えたので、時々スキーマ:dumpは何もしません。試しに数秒しかかからず、試合に値すると思った。しかし、それはdb自体の問題である可能性が高いです。 – eiko

答えて

1

私はこれを行うための最も安全な方法は、それをスキーマから削除だけでなく、それが存在するかどうかをチェックするテーブルを削除する必要があり、この

drop_table :bad_table_names if (table_exists? :bad_table_names) 

ようなものだろうと言うでしょう。それがなければ、それはちょうど安全に通過するでしょう。

+0

私は正しく理解したいと思っていますが、あなたが書いたのはレーキコマンドではなく、別のマイグレーションファイルを実行して不要なテーブルを削除するだけですか? – Ian

+0

その移行 –

0

db:schema:dumpは、データベースに存在するものからスキーマを作成します。データベースからテーブルを削除して再実行すると、テーブルが削除されます。

0

rake db:migrateは、現在のdb状態でスキーマファイルを更新する必要があります。

関連する問題