0

と同期されていない私は、この移行を使用してActive Recordのテーブルをドロップした後、私は最初のトラブルに気づい:Postgresの本番データベースは、Herokuのアプリ

class DropDelayedJobTables < ActiveRecord::Migration 
    def change 
    drop_table :delayed_jobs 
    end 
end 

bundle exec rake db:migrateが正常にテーブルをドロップするように見えました。それはrake db:schema:dumpのスキーマから消えました。レコードはもはや英雄のコンソールでは存在しないように見えた。しかし、テーブルはまだ私のpostgresの生産データベースに存在します!

$ psql myapp_production 
myapp_production=# \dt 
Schema |  Name  | Type | Owner 
--------+-------------------+-------+----------- 
public | delayed_jobs  | table | leoebrown 
public | foods    | table | leoebrown 
public | lists    | table | leoebrown 
public | quantities  | table | leoebrown 
public | schema_migrations | table | leoebrown 
public | users    | table | leoebrown 

また、私はHerokuのコンソール(Food.find(1234).destroy)経由でレコードを削除すると、レコードがまだmyapp_productionのPostgresデータベースに存在していることに気づきました。例えば、私はPostgresデータベース内の食品の数を確認するとき、それは次のとおりです。

myapp_production=# SELECT COUNT(*) from FOODS; 
count 
------- 
    6716 
(1 row) 

しかし、私はHerokuのコンソールでFood.countを実行すると、結果は一般に で、私のPostgresデータベースは、私のライブから切り離されたようですヒロクアプリ。私は、ライブのウェブサイトに食品の数を確認すると

$heroku run console 
irb(main):001:0> Food.count 
=> 6161 

、それは、明らかに6161.

である私は、根本的に間違って何かをやっています。プロダクションデータベースは完全にアプリケーションから切り離されているようです。パフォーマンスに影響していなかったので気づかなかった。これは、本番データベースに何が入っているかは関係ありません。確かにそれは重要です。

以下は私のdatabase.ymlファイルで、ヒントを提供します。完全な開示のために、これらのENV変数のいくつかが格納されているかどうか、存在している場合はどこに、どこに設定すべきかはわかりません。

ご指摘いただきありがとうございます。

database.ymlを:あなたのポストからまあ

development: 

    host: localhost 
    adapter: postgresql 
    encoding: UTF8 
    pool: 5 
    username: <%= ENV['USERNAME'] %> 
    password: <%= ENV['PASSWORD'] %> 
    database: myapp_development 

test: 
    host: localhost 
    adapter: postgresql 
    encoding: UTF8 
    pool: 5 
    username: <%= ENV['USERNAME'] %> 
    password: <%= ENV['PASSWORD'] %> 
    database: myapp_test 

production: 
    host: <%= ENV['IP'] %> 
    adapter: postgresql 
    encoding: UTF8 
    pool: 5 
    username: <%= ENV['USERNAME'] %> 
    password: <%= ENV['PASSWORD'] %> 
    database: myapp_production 
+0

最近データベースをアップグレードしましたか? – dnsh

+0

私はそうは思わない。したほうがいい?問題が起こるずっと前から、それは同じpostgresデータベースでした。 –

+0

実行すると何が得られますか** heroku run rake db:migrate:status ** – dnsh

答えて

1

、私はあなたがあなたのローカルデータベースの名前my_app_productionがあなたのHerokuのデータベースと同期されていないことを言っていると思います。それは決して起こりません。

あなたは

heroku pg:psql --app <your app_name here> 

PSQLのmyapp_productionがあなたのローカルデータベースとオープンpsqlのセッションをすることができ、次のコマンドを使用する必要がHerokuののセッションをpsqlへログインすることに注意すべきです。あなたのヒロクの生産データベースではありません。

これに関する詳細https://devcenter.heroku.com/articles/heroku-postgresql

+0

ありがとうございます!私はherokuデータベースに接続しており、期待どおりに最新の状態です。あなたはそれを理解するのを助けることができますか?database.ymlのデータベースmyapp_productionには何らかの機能がありますか?コマンドラインやレールの移行を使ってherokuデータベースを更新すると、myapp_productionを完全にバイパスすることができるようです。 myapp_productionをdatabase.ymlにリストする必要がありますか?それは全く存在する必要がありますか?それは全く余計なようです。ちなみに、私は英雄趣味基本データベースを使用しています。 –

+0

もう一度お返事ありがとうございます。私の以前のコメントの私の質問に対する考え? –

関連する問題