簡體   English   中英

如何比較Heroku Production Schema vs Local Development Schema?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM