2011-01-04 15 views
0


私がshemaを編集してdb:migrateを実行すると、データベースは変更されませんが、バージョン0にクリアして移行を呼び出すと動作しますが、すべてのデータベースデータは失われます。
どういうところが間違っていますか?db:migrateは効果がありません

答えて

4

方法db:migrate作品だ:

は、ファイルの先頭にコメントを参照してください。移行タイムスタンプ(ファイルが20090807152224_create_widgets.rb20090807152224の部分がタイムスタンプ、schema_migrationsテーブルに追加される行)を追跡するテーブルschema_migrationsをデータベースに保持します。

schema.rbファイルを手作業で修正する必要はありません。このファイルは、db:migrateという結果として自動生成されます。

レールでの思考はあなたのスキーマの変更をしたい場合は、あなたがになるだろうということである新しいものを変更して移行を生成し、その後結果として、更新します、実行db:migrateschema.rbファイルが適切です)。

0

スキーマを更新しているとしたら、db/schema.rbファイル、または実際の移行を更新しているということですか?

schema.rbファイルを更新する場合、ファイルが自動生成されるため、schema.rbファイルは効果がないことに注意してください。

# This file is auto-generated from the current state of the database. Instead of editing this file, 
# please use the migrations feature of Active Record to incrementally modify your database, and 
# then regenerate this schema definition. 
+0

20101217121533_create_users.rbを1つの新しい行で更新しましたが、データベースをバージョン0にクリアし、dbをコールした後:そのワークを移行します – Dodjs

0

あなたが移行ファイルを変更していたようです。

移行ファイルを変更しないでください。新しいものを追加してください。列のタイプを変更する移行を行うことができます。古い移行を変更すると役立つかもしれませんが、結果が分からない場合は実行しないことがあります。他の人が触れたように、スキーマも変更しないでください。しかし、私はあなたがそれをやっているとは思わない。

関連する問題