0

さて、これが起こったことです:

1) テーブルに列を追加する必要がありましたが、移行を生成する代わりに手動で記述しました。私が付けたファイル名は問題ないように見えましたが、タイムスタンプがなかったため、問題が発生しました。

2) 何年にもわたっていじった後、schema.rb ファイルを更新して、希望どおりに見えるようにしました。次に、データベースをリセットしました。それは良かったのですが...

3)移行を実行しようとしたとき、最後のいくつかはすでに実行されていたため、重複していると見なされました。スキーマが正常に見え、すべてがうまく機能していたため、すべての移行を削除しました。

4) しかし、今は私のローカル マシンでは問題なく動作していますが、Heroku にデプロイしようとすると実際の問題が発生します。Heroku は私の古い移行にアクセスしているようで、明らかにそこにあるテーブルの存在を否定しています。何度もリセットしました。

それで、スキーマを移行せずにもう一度開始して、移行があったことをシステムに忘れさせる方法はありますか? または、関連するすべてのテーブル データを含む 2 つの新しい移行を作成するとどうなりますか?

編集:これは、heroku ログから取得したものです。基本的にログインページにアクセスできますが、サインインしようとするとこれが発生します。

89.27.92.12 の GET "/home" を 2013-02-19 18:27:01 +0000 2013-02-19T18:27:01+00:00 app[web.1]: 2013-02-19T18:27 に開始しました:01+00:00 app[web.1]: HTML として MaterialsController#home による処理 2013-02-19T18:27:01+00:00 app[web.1]: 26ms で 500 内部サーバー エラーを完了 2013-02 -19T18:27:01+00:00 app[web.1]: 2013-02-19T18:27:01+00:00 app[web.1]: ActiveRecord::StatementInvalid (PGError: エラー: 関係 "マテリアル"存在しません 2013-02-19T18:27:01+00:00 app[web.1]: LINE 4: WHERE a.attrelid = '"materials"'::regclass 2013-02-19T18:27:01+00 :00 app[web.1]: ^ 2013-02-19T18:27:01+00:00 app[web.1]: FROM pg_attribute a LEFT JOIN pg_attrdef d 2013-02-19T18:27:01+00:00 app[web.1]: : SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 2013-02-19T18:27:01+00:00 app[web.1]: WHERE a.attrelid = '"materials"'::regclass 2013-02-19T18:27:01+00: 00 app[web.1]: AND a.attnum > 0 AND NOT a.attisdropped 2013-02-19T18:27:01+00:00 app[web.1]: ON a.attrelid = d.adrelid AND a. attnum = d.adnum 2013-02-19T18:27:01+00:00 app[web.1]: ): 2013-02-19T18:27:01+00:00 app[web.1]: app/controllers /materials_controller.rb:11:`get_materials' 2013-02-19T18:27:01+00:00 app[web.1]: ORDER BY a.attnumattnum = d.adnum 2013-02-19T18:27:01+00:00 app[web.1]: ): 2013-02-19T18:27:01+00:00 app[web.1]: app/controllers /materials_controller.rb:11:`get_materials' 2013-02-19T18:27:01+00:00 app[web.1]: ORDER BY a.attnumattnum = d.adnum 2013-02-19T18:27:01+00:00 app[web.1]: ): 2013-02-19T18:27:01+00:00 app[web.1]: app/controllers /materials_controller.rb:11:`get_materials' 2013-02-19T18:27:01+00:00 app[web.1]: ORDER BY a.attnum

4

1 に答える 1

1

これは本当にめちゃくちゃに聞こえます!

PGError: ERROR: relation "materials" does not existこのテーブルがスキーマにないことを明確に示しています。

データベースを直接調べることで、現在の移行状態を確認できます。ActiveRecord::Base.connection.execute("SELECT * from schema_migrations").map(&:to_s)

データベースをダンプして、ローカルを確認することもできます: https://devcenter.heroku.com/articles/heroku-postgres-import-export

于 2013-02-19T19:48:00.450 に答える