1

ActiveRecord を使用するアプリを Heroku にデプロイしましたが、内部サーバー エラーが発生しました。私のローカル マシン (データベースが SQLite の場合) では問題なく動作します。以下は、エラーのログ メッセージです。ニュースレター テーブルは、関連付けのない単なるテーブルです。メールアドレスのフィールドは 1 つだけです。私は PostgreSQL のことを知りませんし、何が問題なのかもわかりません。

"ActiveRecord::StatementInvalid - PGError: ERROR:  relation "newsletters" does not exist
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"newsletters"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
:

これは、エラーが表示されたときに呼び出されるコードです。

  post :index, :map => "/newsletter" do
    email=params[:email]
    @signup=Newsletter.new(:email=>email)
    render "newsletter/index",:layout => false
  end
4

3 に答える 3

1

Heroku はローカル データベースを見つけると思うので、次のように書くだけです。

heroku db:push

サーバーからデータをフェッチする場合は、次のようにします。

heroku db:pull
于 2010-07-06T19:31:22.730 に答える
0

問題を修正しました。私がしなければならなかったのはheroku db:push sqlite://db/local.db

于 2010-07-06T17:09:01.597 に答える
0

この問題の根源は、ActiveRecord が「カタログ クエリ」と呼ばれるものを通じて特定のテーブルの構造を理解しようとしていることです。これは、データベースで何が起こっているかを理解するための、データベースのメタデータ関係に対するクエリです。

このクエリは、リレーションが既に存在することを前提としています。存在しないため、不可解なメッセージが表示されます。これはおそらく、「これを ActiveRecord に報告する」(まだ修正されていない場合) の領域に分類されます。

于 2011-10-02T03:40:41.657 に答える