2011-09-15 56 views
2

我們與Phingdbdeploy task一起工作來做我們的PostgreSQL數據庫的version control,這總是一種很好的工作方式。在我們開始使用它之後,我並沒有真正遇到數據庫版本的問題,除了一個嘮叨的疑問:我們如何控制數據庫包含的數據?在使用dbdeploy部署數據庫時控制數據

現在,我通常會有一個包含一些示例數據的增量,用於測試,但在生產環境中,我希望生產數據(如實際有效數據)。當然,我可以編寫另一個截斷測試數據並插入實際數據的增量,但不知何故,這種增量會感覺笨重和繁瑣,因爲增量中唯一的語言是SQL。編寫這樣一個三角洲時,處理順序和確保外鍵關係是正確的,這是一個真正的痛苦。

所以我認爲編寫一個PHP腳本可以導入來自CSV文件的數據。這實際上會起作用,直到有另一個數據庫更改重命名列,這會導致PHP文件無用。當然,通過更新腳本來合併數據庫更改並重新運行腳本,可以很容易地解決這個問題,但這很容易出錯,這就是我首先使用dbdeploy的原因。

所以,我的問題是;在部署更改時如何處理數據,或者更準確地說:如何在生產環境中插入數據?

+0

不應該將生產中的數據通過某種管理界面插入到乾淨的數據庫中嗎?我認爲DBDeploy的想法是使數據庫保持最新狀態,而不必刪除任何生產數據。爲了測試,最好使用一些獨立的燈具管理,而不是將測試數據保存在增量中。 Phpunit或一些PHP框架可用夾具管理。 – poisson

+0

你可能是對的。雖然我不認爲整個管理界面是一個好主意,我不太喜歡那樣,因爲它是密集的。但不保留三角洲的測試數據可能是一個好主意。發佈它作爲答案,我會接受它。 –

+0

對不起,但我並沒有完全理解問題陳述。有一些YouTube視頻嗎?請任何鏈接 –

回答

1

你說得對,測試數據應該不用增量,就像測試不應該在生產系統上進行測試一樣。你用什麼來測試? Phpunit,Selenium,...?你使用任何PHP框架?

無論如何,最好的方式可能是使用一些可能已經附帶的任何工具,你碰巧正在使用的東西。例如Symfony 1.x擁有相當不錯的燈具管理。爲了測試PHP代碼,PHPUnit是一個事實上的標準,它附帶一些燈具管理。請嘗試查看PHPUnit文檔以獲取關於它如何處理數據集的更多信息:http://www.phpunit.de/manual/current/en/database.html#understanding-datasets-and-datatables