2017-04-24 58 views
0

之間的遷移和數據庫的差異我最近部署了一個網站,Heroku的,我有與數據庫的問題。我在rails上使用ruby,當我第一次創建我使用SQLite的本地數據庫時。在部署到heroku時,我必須將我的數據庫更改爲Postgres,並在此過程中刪除多個遷移文件並將其更改爲單個遷移。現在,當我在本地主機上運行postgres數據庫時,我仍然可以看到數據庫中的所有列,但是當我訪問heroku上的某個列時,缺少一列。的Rails:開發和生產

我檢查我的兩個本地控制檯和Heroku的控制檯和數據庫現在是不同的。本地控制檯包括數據庫中的所有列,而heroku控制檯缺少數據庫中的某一列,但正確生成所有其他列。我曾嘗試在heroku上運行rake任務,並將最近的更改推送到heroku。

我試圖增加一個額外的遷移缺少的列添加到數據庫中,但每當我試圖耙它告訴我,屬性已經存在的遷移。任何幫助,我可以得到讚賞!

+2

使用'rake db:schema:load'在heroku上設置你的db,它使用'schema.rb'文件來正確設置所有的東西。 – Iceman

+2

http://guides.rubyonrails.org/active_record_migrations.html – max

+0

謝謝@Iceman!這工作完美! – user7077886

回答

2

設置你的數據庫在Heroku上的最佳方式是與

rake db:schema:load 

guides on migrations

遷移,強大的,因爲他們可能是不適合你的數據庫架構的權威來源 。該角色屬於db/schema.rb或Active Record通過檢查數據庫生成的SQL文件。他們 沒有被設計成可以編輯,他們只是表示數據庫的當前狀態 。

通過重播整個遷移歷史記錄,不需要(也很容易出錯)部署應用程序的新實例 。這是更簡單 和更快地只是加載到數據庫的當前 模式的說明。