2010-12-13 81 views
4

來自Ruby on Rails的世界,我正在尋找一種有效的方式來版本化我的數據庫(在rails的情況下,遷移服務於此目的)。用yii php框架保持數據庫版本的最佳方法是什麼?

目前我正在拍攝數據庫的快照並在常規基礎上導出整個模式,但整個過程非常手動。

有沒有更好的方法來做到這一點?

p.s.我正在使用mysql。

+0

我不知道任何有關PHP和那個世界上有什麼可用。但是您始終可以使用liquibase,它以平臺不可知的方式(使用Java編寫)啓用數據庫版本控制,回滾等。 – 2010-12-13 16:46:21

+0

我想在這裏更多地瞭解你想要完成的事情。你只是用一個主數據庫的模式更新其他數據庫?如果是這樣,多少? MySQL數據庫服務明確提供了從服務器的機制,這些服務器訂閱了所有的更改,然後將複製主服務器上的所有操作。你不需要PHP來實現它。 – zanlok 2010-12-13 17:59:45

+0

zanlok,我沒有試圖部署從服務器。 db版本控制系統有很多好處。例如,開發人員/代碼分支之間的協調更容易,並且保持對數據庫模式更改的引用。任何類型的手動過程都容易出現人爲錯誤。在這個時代,我認爲應該有很多系統能夠自動跟蹤你的變化並且記錄它們。 – etang 2010-12-14 15:19:32

回答

4

在Yii 1.1.6中會有數據庫遷移概念。這將允許我們使用PHP代碼以數據庫不可知的方式進行數據庫操作。有關更多詳細信息,請參見http://code.google.com/p/yii/issues/detail?id=1191

+0

+1對於酷的提示。我們目前使用基於dbdeploy的自己的工具(當時我們需要它的實現真的是****,所以我們自己寫了)。這對我們非常有用。雖然一定會在1.1.6正式發佈的時候檢驗Yii的實現:) – Blizz 2011-01-05 08:06:53

+0

我在考慮使用Doctrine項目提供的遷移功能。然而,「開箱即用」解決方案總是很好 – galymzhan 2011-01-05 10:01:03

0

基本上:。不是用PHP的東西。

無論其 ...調和方案,如從SHOW CREATE <table_name>;命令,仍然是你在說什麼有關的可靠方法 - 如果本質上是相當平凡的。如果要檢測並複製模式定義,必須非常瞭解模式定義機制的細節。不過,您可以自由開發專業領域,以跟蹤更新架構時更新的版本號。然後,至少您會知道何時需要更新其他複製目標 - 通過比較該版本字段中的數據。

我通常看到這種實現的方式是跟蹤所有ALTER TABLE命令(等)並跟蹤它們。您可以將一個'r12345.sql'文件像SVN一樣檢入一個自動執行數據庫更新的系統。它涉及到了,但我的意思是說,一個php腳本可以檢查所有數據庫模式.sql文件並執行每個數據庫(系列),這些數據會將更改回放到當前數據庫中。

很大程度上取決於你想要完成什麼。如果你提供更多的信息,我會解釋。

相關問題