と同期されていない私は、この移行を使用して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
最近データベースをアップグレードしましたか? – dnsh
私はそうは思わない。したほうがいい?問題が起こるずっと前から、それは同じpostgresデータベースでした。 –
実行すると何が得られますか** heroku run rake db:migrate:status ** – dnsh