4

新しいデータベースで移行を実行すると、次のエラーが発生します。

>> rake db:drop; rake db:create:all; rake db:migrate
                                                                                           1 activity-image-additions-!?
==  CreateSomething: migrating ================================================
-- create_table(:somethings)
   -> 0.0042s
==  CreateSomething: migrated (0.0043s) =======================================

rake aborted!
An error has occurred, this and all later migrations canceled:

PG::UndefinedColumn: ERROR:  column "id" does not exist
LINE 1: ...O "schema_migrations" ("version") VALUES ($1) RETURNING "id"
                                                                   ^
: INSERT INTO "schema_migrations" ("version") VALUES ($1) RETURNING "id

RETURNING "id"schema_migrations テーブルには ID がないため、生成された SQL クエリには含まれません。

失敗後にデータベースを移行しようとすると、成功します。

>> rake db:migrate

==  CreateSomething: migrating ================================================
-- create_table(:somethings)
   -> 0.0041s
==  CreateSomething: migrated (0.0042s) =======================================

現在、OS X 10.8 で PostgreSQL 9.2.4、Rails 4.0.0、pg gem 0.16.0 を実行しています。

唯一の移行:

class CreateSomething < ActiveRecord::Migration
  def change
    create_table :somethings do |t|
      t.integer :x
      t.integer :y
    end
  end
end

注: この移行を他の Rails プロジェクトで試しましたが、うまくいきました。他に何か問題がありますが、どこから始めればよいかわかりません。

スタック トレースは、pastebinで利用できます。

4

2 に答える 2

0

新しいデータベースをセットアップするときは、 を実行しないでくださいrake db:migrate。代わりに、 を使用する必要がありますrake db:schema:load

移行システムは、スキーマを更新するように設計されています。新規インストールでは、最新のスキーマをすぐにロードする方が高速で便利です。

于 2013-12-13T18:56:58.953 に答える