來自Ruby on Rails的世界,我正在尋找一種有效的方式來版本化我的數據庫(在rails的情況下,遷移服務於此目的)。用yii php框架保持數據庫版本的最佳方法是什麼?
目前我正在拍攝數據庫的快照並在常規基礎上導出整個模式,但整個過程非常手動。
有沒有更好的方法來做到這一點?
p.s.我正在使用mysql。
來自Ruby on Rails的世界,我正在尋找一種有效的方式來版本化我的數據庫(在rails的情況下,遷移服務於此目的)。用yii php框架保持數據庫版本的最佳方法是什麼?
目前我正在拍攝數據庫的快照並在常規基礎上導出整個模式,但整個過程非常手動。
有沒有更好的方法來做到這一點?
p.s.我正在使用mysql。
在Yii 1.1.6中會有數據庫遷移概念。這將允許我們使用PHP代碼以數據庫不可知的方式進行數據庫操作。有關更多詳細信息,請參見http://code.google.com/p/yii/issues/detail?id=1191。
基本上:否。不是用PHP的東西。
無論其 ...調和方案,如從SHOW CREATE <table_name>;
命令,仍然是你在說什麼有關的可靠方法 - 如果本質上是相當平凡的。如果要檢測並複製模式定義,必須非常瞭解模式定義機制的細節。不過,您可以自由開發專業領域,以跟蹤更新架構時更新的版本號。然後,至少您會知道何時需要更新其他複製目標 - 通過比較該版本字段中的數據。
我通常看到這種實現的方式是跟蹤所有ALTER TABLE命令(等)並跟蹤它們。您可以將一個'r12345.sql'文件像SVN一樣檢入一個自動執行數據庫更新的系統。它涉及到了,但我的意思是說,一個php腳本可以檢查所有數據庫模式.sql文件並執行每個數據庫(系列),這些數據會將更改回放到當前數據庫中。
很大程度上取決於你想要完成什麼。如果你提供更多的信息,我會解釋。
我不知道任何有關PHP和那個世界上有什麼可用。但是您始終可以使用liquibase,它以平臺不可知的方式(使用Java編寫)啓用數據庫版本控制,回滾等。 – 2010-12-13 16:46:21
我想在這裏更多地瞭解你想要完成的事情。你只是用一個主數據庫的模式更新其他數據庫?如果是這樣,多少? MySQL數據庫服務明確提供了從服務器的機制,這些服務器訂閱了所有的更改,然後將複製主服務器上的所有操作。你不需要PHP來實現它。 – zanlok 2010-12-13 17:59:45
zanlok,我沒有試圖部署從服務器。 db版本控制系統有很多好處。例如,開發人員/代碼分支之間的協調更容易,並且保持對數據庫模式更改的引用。任何類型的手動過程都容易出現人爲錯誤。在這個時代,我認爲應該有很多系統能夠自動跟蹤你的變化並且記錄它們。 – etang 2010-12-14 15:19:32