2012-04-15 13 views
3

rakeタスクを使用してdbにデータを入力するとき、Hartl's Railsチュートリアル(第2版)の第9章の最後にエラーが発生しました。それを解決したが、何が悪くなったのか分からない。他の誰かがこのエラーに遭遇した場合、ここで私がしたことがあります。誰かが間違っていたことを知っているなら、コメントしてください - 私は知りたいです。ありがとう!PGError:ERROR:relation "users"が存在しない - Railsチュートリアル第2版第9章Heroku

は次に、これらのコマンドに

$ 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: relation "organizations" does not exist (ActiveRecord::StatementInvalid)

、私はこれらのコマンドを実行しました:

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

は今、アプリが働いています。 SHARED_DATABASEをリセットするときに、なぜ私がそのエラーを出すのか、私には明らかではありません。

+4

'db:migrate'を呼び出した後に' pg:reset'を呼び出すと、データベースが空になり、すべての移行がリセットされます。 2回目の*リセット後に*を移行したときに、移入しようとしていたテーブルが実際に存在していたはずです:^) – rjz

+0

rjz、それは答えにする必要があります。 – EricM

+0

ああ、ありがとうrjz。それは理にかなっている。あなたは 'heroku pg:reset SHARED_DATABASE -confirm 'と 'heroku rake db:reset'の違いを知っていますか? –

答えて

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 

ハットヒント

+0

それが本番データベースの場合はどうすればよいですか?リセットできない= S – mariowise

6

を@rjzするために、私は正確に同じ問題を抱えていたが、正しい順序でコマンドを実行していました。すべてのレーキコマンドの後に次のコマンドを実行しなければならなかった。

$ heroku restart 
+0

$ heroku run rake db:migrate $ heroku restart あなたはいいですね。 – Recomer

2

他の誰かがこの問題を抱えている場合は、同じ症状の別の問題があります。 application.rbにARオブザーバも設定されている移行されていないテーブルがある場合、レイクは観察されている基になるモデルをロードしようとするためロードされません。移行する必要があります。次に、ARオブザーバをapplication.rbに追加します。

関連する問題