2012-01-09 7 views
7

私のローカルenvにテーブルを追加しましたschoolsと呼ばれ、それはdevで正常に動作します。実際にはステージング(英雄)でもうまく動作しますが、生産には大きな時間がかかりません。rake db:migrateはエラーを発生させます。生産/ herokuに失敗しました:どこにa.attrelid = '"学校"':regclass

私はassest(RAILS_ENV = productionで)をプリコンパイルすることはできません。プロダクション(heroku)のレールコンソールを含むアプリケーションのすべての部分にアクセスできません。すべてがエラーを吹き飛ばしている。私はこれで数時間を失ってしまったが、それを私たちのものに近づけることはできない。 (注:私は'"..."'が問題の一部であると思うtable_nameへの参照にあります)

私はレール3.1.0から3.1.3へ行って、それと関係があるかもしれません。

PGError: ERROR: relation "schools" does not exist 

LINE 4:    WHERE a.attrelid = '"schools"'::regclass 
             ^
:    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 = '"schools"'::regclass 
       AND a.attnum > 0 AND NOT a.attisdropped 
      ORDER BY a.attnum 

私はこのままでも問題ありません。私はここでこのトピックに関するいくつかの他の質問を読んだが、視力には解決策はなかった。ご協力ありがとうございました。 洞察力があれば幸いです。

更新 ------------------------------------------- -----------

私はちょうどherokuで新しいアプリを作成し、rake db:migrateを実行して同じエラーが発生しました。

UPDATE 2

私はHerokuのと "学校" のスキーマ内にあるからアプリをクローン化しました。

create_table "schools", :force => true do |t| 
    ... 
    ... 
end 

UPDATE 3

はバックレール3.1.0に戻す試みたが、それは助けにはなりませんでした。

更新日4

まだこれに取り組んでいます。 herokuのサポートからまだ聞いていない。

UPDATE 5

Herokuのサポートは、「学校」はDB内のテーブルではありませんが、私はまだ、まだダウンコンソールやアプリにアクセスすることができないことを確認することができました。

+0

あなたは 'schools'テーブルを作成するために、生産に移行を実行しましたか?このクエリは、ActiveRecordのように、「学校」モデルのための「学校」の構造を理解しようとしているように見えます。 –

+0

感謝の返事をいただきありがとうございます。私は移行を実行したが、それは私にそのエラーを与える。不思議にも、私は生産からアプリをクローンし、 '学校はスキーマにあるので、移行は適切に完了したようだ。 – Yuri

+0

データベースの 'schools'テーブルはありますか?本番データベースのコピーをプルダウンしようとするとどうなりますか?それは '学校'テーブルを含んでいますか? –

答えて

4

Heroku Supportは、私たちが知る限り、必ずしもherokuのプラットフォーム関連の問題ではなかったが、これを解決するのに役立った。

レールのブートストラップがテーブルとやり取りしようとしていて、移行が実行できなかったためにテーブルが作成されなかったため、移行が実行されない鶏と卵の問題が発生しました。 ActiveAdminは、レールが起動したときに初期化していて、学校を検索しようとしていました。助けてくれた皆さん、ありがとう。

+2

+1です。 –

+5

** ActiveAdmin **の言及に感謝します。 'rake db:reset RAILS_ENV = test'はあなたが報告したのと同じPGErrorを返しました。正確な原因を見つけることができませんでしたが、1.私の 'initializers/active_admin.rb'を削除しました。2.' app/admin'をプロジェクトから外しました。3. configの 'ActiveAdmin.routes(self)/routes.rb'。 'rake db:reset RAILS_ENV = test'が問題なく走った。私は上記の3つのステップを元に戻し、途中であった。 – deefour

1

いいえ、引用符は問題ではありません。二重引用符は、この場合に必要とされていないが、それらはいずれか、間違っていないです:

SELECT '"schools"'::regclass 

私は、PostgreSQLが正しいと関係schoolsは何が存在しませんことを検討する - データベース内の一部であるスキーマでsearch_path

あなたのデータベースに接続できる場合、あなたはあなたの問題を診断するために、このクエリを実行できます。

SELECT n.nspname AS schema_name 
     ,c.relname AS table_name 
     ,c.relhastriggers 
     ,c.reltuples 
FROM pg_catalog.pg_class c 
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
WHERE c.relname ~~* '%schools%' 
AND c.relkind = 'r' 
AND nspname <> 'pg_catalog'; 

は名前が文字列schoolsが含まれているすべてのテーブルを検索します。

\dt *schools* 

はあなたが問題を抱えているのと同じデータベースに同じユーザが接続されていることを確認してください:psqlメタコマンドに似ています。

+0

Erwinにお返事ありがとうございます。私は何をすべきだとお考えですか? ' 、それは両方のローカルおよびステージングENVに取り組んでいます| T |学校が行う:私は 'クラスCreateSchools Yuri

+0

私は 'rails console'、' heroku run console'を実行できません。上記のエラーが表示されます。私は生産上のアプリからかなりひどくブロックされています。 – Yuri

+0

アプリをクローンしました。学校はスキーマにあります。私はここでもっと明白なものを見逃していますか? – Yuri

5

私は移行前のルートで

#ActiveAdmin.routes(self) 

をコメント化し、それを解決してきました。移行の完了後、私はこの行のコメントを外してすべて正常に動作します。

+0

これは私のために働いた! –

0

テストの実行中にこの問題が発生しました。

単にtest環境用のデータベースをリセットします。

rake db:reset RAILS_ENV=test 
関連する問題