3

Hartl の Rails チュートリアル (第 2 版) の第 9 章の終わりで、rake タスクを使用してデータベースにデータを入力するときにエラーが発生しました。最終的には解決しましたが、何が悪かったのかわかりません。他の誰かがこのエラーに遭遇した場合に備えて、これが私がしたことです。何が問題なのか知っている人がいたら、コメントしてください -- 知りたいです。ありがとう!

これらのコマンドを実行しました

$ git push heroku
$ heroku run rake db:migrate
$ heroku pg:reset SHARED_DATABASE --confirm <name-heroku-gave-to-your-app>
$ heroku run rake db:populate

次に、このエラーが発生しました:

rake aborted!
PGError: ERROR:  relation "users" 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 = '"users"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum

Tasks: TOP => db:populate
(See full trace by running task with --trace)

何が間違っていたのか理解できませんでした。次に、この投稿に出くわしました: Heroku Postgres Error: PGError: ERROR: relationship "organizations" does not exist (ActiveRecord::StatementInvalid)

そこから、次のコマンドを実行しました。

heroku run rake db:reset
heroku run rake db:migrate
heroku run rake db:populate

これでアプリが動作します。SHARED_DATABASE をリセットするときになぜそのエラーが発生したのか、まだはっきりしていません...誰かが知っているなら、知りたいです。

4

3 に答える 3

7

ステップが順不同です。彼らはする必要があります:

$ git push heroku
$ heroku pg:reset SHARED_DATABASE --confirm <name-heroku-gave-to-your-app>
$ heroku run rake db:migrate
$ heroku run rake db:populate

@rjzへの帽子のヒント

于 2012-05-07T14:01:14.200 に答える
6

まったく同じ問題がありましたが、コマンドを正しい順序で実行しました。すべての rake コマンドの後に次を実行する必要があり、その後は正常に機能しました。

$ heroku restart
于 2012-07-13T16:16:13.500 に答える
2

In case someone else comes across this, there is a different problem that has the same symptom. If you have an unmigrated table that also has an AR observer that is set in application.rb, rake will not load because it tries to load the underlying model that is being observed. You have to migrate, then add the AR observer to application.rb.

于 2012-07-14T18:02:27.443 に答える