同様の質問がたくさんあります。しかし、私の状況は少し違うと思います。私は、私のローカルマシン(PostgreSQLを使用)にHeroku(私はprodでsqlite3を使用)からdbを引き出しました。 prod dbにはその時点でデータがありませんでした。Railsを使用して開発からテストへデータベースを移行する際に助けが必要
その後、私はテストのためにdbの移行を行っていません。今私はdevのdbにいくつかのフィールドがあります。しかし、私は自分の持っているものを見るためにコンソールをテストすると(Userテーブルを参照すると)User.countは0を返しますが、devには2人のユーザを返します。
レイクをdb:migrate RAILS_ENV=test
としましたが、エラーメッセージも成功メッセージもありませんでした。私はそれが成功したと思って、それらの2人のユーザーがまだ何もない場合、テストdbをチェックしました。それから私はbundle exec rake db:test:prepare
を試しました。
20120415210441 CreateUsers
20120418064930 AddIndexToUsersEmailデータベースを更新する
20120419034627 AddPasswordDigestToUsers
20120504031144 AddRememberTokenToUsers
実行rake db:migrate
:これはあなたが4つの保留中のマイグレーションを持っ出力
**でした再度試してください。**
解決策は何ですか。
EDIT: FYI:私は使用しています窓 私はまた、すくいデシベルを実行します。を移行し、私はこのエラーを得ました。
$すくいデシベル: == CreateUsersを移行:移行=================================== ================= - create_table(:users) レーキが中止されました! エラーが発生した、これとキャンセルすべて以降の移行:
するSQLite3 ::のSQLException:表 "ユーザー" は既に存在し:CREATE TABLE "をユーザー"( "ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULLと、 "名前" VARCHAR日時 "updated_atの" NOT NULLの日時 "のcreated_at"(255)、 "電子メール" varcha (255)、NOT NULL)
タスク:TOP => DB: を(とタスクを実行することにより、完全なトレースを参照してください移行 - トレース)
は、ご返信いただきありがとうございます。私が "rake db:migrate"を実行すると、以下のようになります。(きちんとした形式で見たいと思ったら質問を更新しました) $ rake db:migrate == CreateUsers:migrating ======== ============================= - create_table(:ユーザー) レーキが中止! エラーが発生しました。これ以降の移行はすべてキャンセルされました。 SQLite3 :: SQLException:テーブル "users"が既に存在しています:CREATE TABLE "users"( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL、name "varchar )、 "email" varcha (255)、 "created_at" datetime NOT NULL、 "updated_at" datetime NOT NULL) – WowBow
私はFactory-girlの宝石を使用しています – WowBow
私は一つのことを尋ねることを忘れました。どのようにあなたのdevからテストに値(各テーブルに関連付けられているすべての行)をコピーしますか?私はrake db:migrate:prepareはそれをしないと思う。右? – WowBow