我首先注意到的麻煩後,我用這種遷移投下了活動記錄表同步:Postgres的生產數據庫沒有與Heroku的應用
class DropDelayedJobTables < ActiveRecord::Migration
def change
drop_table :delayed_jobs
end
end
bundle exec rake db:migrate
似乎成功地刪除表;它在rake db:schema:dump
之後從模式中消失;並且記錄似乎不再通過heroku控制檯存在。但是,表格仍然存在於我的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應用程序。
$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運行rake db:migrate:status ** – dnsh