如果這是一個簡單的問題,我很抱歉 - 通過單獨搜索很難找到答案。Postgres - 如何將開發數據庫中的更改部署到現場版本
將開發數據庫中的變更部署到活動版本的工作流程是什麼?
我的應用程序的數據庫是在Heroku上運行的Postgres。它會定期更新用戶內容。我有一個開發版本(含有過時的內容)在本地運行。
我在我的本地數據庫中創建了一個新表,我想現場部署它。如何在不復制活動服務器上的所有工作的情況下執行此操作,並且不克隆我的本地副本?
非常感謝您的幫助!
如果這是一個簡單的問題,我很抱歉 - 通過單獨搜索很難找到答案。Postgres - 如何將開發數據庫中的更改部署到現場版本
將開發數據庫中的變更部署到活動版本的工作流程是什麼?
我的應用程序的數據庫是在Heroku上運行的Postgres。它會定期更新用戶內容。我有一個開發版本(含有過時的內容)在本地運行。
我在我的本地數據庫中創建了一個新表,我想現場部署它。如何在不復制活動服務器上的所有工作的情況下執行此操作,並且不克隆我的本地副本?
非常感謝您的幫助!
使用Flyway自動應用您的SQL腳本的集合。
術語「數據庫遷移」已經出現移動的變化,從開發到測試數據庫結構的這種苦差事和描述了生產機器。
的Flyway項目是一個基於Java的工具包來追蹤一系列SQL腳本和Java jar文件的更新數據庫使用。
這裏沒有特別的魔法。該工具將查找使用約定命名的文件,以便在您的SQL腳本上放置序列號。該工具會在數據庫中創建一個額外的表來存儲其元數據,包括應用的最後一個腳本的編號。該工具會掃描所有更新的文件,並應用它們,並使用上次應用腳本的編號更新元數據表。
因此,部署意味着只需將最新的SQL腳本移動到部署機器上,讓Flyway完成工作。
另一個好處是可以快速將數據庫重建到某個測試點。同樣,適用於持續集成以自動保持數據庫的形狀正確。
您爲這些福利支付的價格是紀律。您必須從不再次在數據庫結構中進行任何即時更改。所有更改都必須作爲SQL腳本編寫(並可選擇作爲Java代碼存儲在jar中)並通過Flyway應用。
如果從數據庫創建的一開始就使用起來更容易。但是你也可以「基線」開始使用現有的數據庫。
Flyway包含命令行工具以及Java API接口。所以即使非Java中心的應用程序也可以使用Flyway。
開源,免費。支持許多數據庫,包括Postgres。
的項目是另一種工具,目的遷飛路線頗爲相似。
我使用EMS DB Comparer for PostgreSQL進行此任務。不幸的是,它不是免費的,但自從幾年以來我找不到更好的選擇。可以比較兩個DB並生成create/alter/etc腳本。很容易,很多選擇。
flywaydb.com沒有解決。 flywaydb.org工作。 – jamie
@jamie固定網址。僅供參考,在Stack Overflow上,歡迎您直接編輯答案以修復此類錯誤。 –