[英]How to compare Heroku Production Schema vs Local Development Schema?
我最近在嘗試更改架構中的列名時遇到了錯誤。 它在本地工作,但是當我db:在Heroku上遷移時,它給了我一個錯誤,說該列不存在。
在過去,我一直很難統一我的生產模式和開發模式。 這可能是因為我在本地創建了遷移,在本地運行db:migrate,然后由於某種原因在本地刪除了遷移,然后推送到heroku,導致遷移在本地運行但不在prod中運行。 (我現在知道這是一件非常糟糕的事情,我應該在self.down中輸入相反的函數並執行rake db:rollback)
我想知道的是,我如何檢查我的本地和prod架構是否不同,是否有一種方法可以改變我的本地表/列以適應制作'? 因為它似乎只與生產的東西一起工作,我知道我的本地環境中有無用的表/列。
您可以在Heroku上運行bash控制台:
heroku run bash -a app_name
從那里,您可以使用標准bash命令導航文件系統,並使用schema.rb
文件與本地schema.rb
進行比較。
為了統一模式,我建議閱讀Rails Rails指南中有關Schema轉儲的詳細信息。 您可以將模式文件復制到本地環境,然后運行`rake db:reset',這將刪除開發數據庫並從新模式重新創建它。 請務必閱讀Schema Dump詳細信息,因為根據數據庫的需要,有多種方法可以轉儲模式。 顯然,在開始之前備份你需要的任何東西。
從那時起,您應該回到干凈的平板,您可以再次正確地開始遷移,以更新您的本地應用程序和Heroku。
rake db:schema:dump
記錄在Heroku的文件系統上無法正常工作。
您可以使用此單行程序打印在Heroku上運行的Rails應用程序的架構:
heroku run rails runner "\"sio = StringIO.new; ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, sio); puts sio.string\"" --app [YOUR APP NAME]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.