相信各位小夥伴在進行團隊開發時都遇到過這個問題:一般開發時,各個團隊成員使用的是自己開發環境上的本地資料庫,這個資料庫只有自己在使用,開發過程中,資料庫是會經常變動的,比如其他小夥伴新增了乙個字段,或者新增了一張表,那麼此時問題就來了,我如何把其他小夥伴進行的資料庫變更同步到我本地來?不然我更新**後很可能各種報錯。這個雖然是乙個小問題,大不了直接再去拷貝乙份最新的資料庫出來,但是每次都這樣,非常低效和繁瑣,那這個問題該如何解決?
解決方式1:
開發時團隊成員共用一套資料庫,直接把資料庫的變更同步到這個資料庫上就行了。這個方法簡單粗暴,不過還是有不爽的地方: 共用資料庫的話,資料就是共用的,我開發測試乙個功能時,資料有可能被其他小夥伴改動了;還有這種方式資料庫變更也要單獨做版本控制。
解決方式2;
每個小夥伴都使用本地庫開發,有資料庫變更時給其他人發郵件。
這種方式非常繁瑣,低效,而且很可能其他小夥伴經常忘記發的情況。
解決方式3:
使用開源的資料庫版本控制工具。比如dbv ,這個工具安裝配置極其簡單,也能滿足現在的使用要求,其實我們的需求也並不多,主要是:
對資料庫的變更進行版本控制,這個是必須的,對資料庫的變更必須要記錄下來。
我本地的資料庫如何同一鍵同步其他小夥伴做的資料庫變動,比如小張增加了乙個字段,我可以一鍵同步到我本地,不至於我本地各種頁面報錯。
目前這個工具這兩個大需求都能滿足,下面就介紹下如何安裝使用吧。
其實如何安裝和配置文件上說的都很詳細,文件傳送門, 這裡我再重複一遍。
重啟apache
。
2. 配置
php.ini
要開啟php_gettext
擴充套件:
extension=php_gettext.dll
複製dbv
根目下的config.php.sample
乙份為config.php
,配置config.php
中的資料庫配置。連線到你本地的資料庫。
define('db_host', 'localhost');
define('db_port', 3306);
define('db_username', 'root');
define('db_password', '123456');
define('db_name', 'shangsheng_offical');
配置完成後,在瀏覽器中訪問你剛才配置的站點就能看到了
3. 使用git或者svn做版本控制
dbv
其實也是使用的git
或者svn做的版本控制,這個和一般的專案是一樣的,比如你使用git
的話直接在根目錄下執行
git init
就行了,然後把它提交到git
伺服器,方便下一步其他小夥伴同步更新。
注意:
/data/meta/revision
這個檔案儲存的是你本地資料庫資訊,這個檔案必須新增到git
的忽略列表,否則會覆蓋到其他人的;還有config.php
這個檔案也要新增到忽略列表,因為這是你本地的配置。和其他團隊成員無關。
4. 如何使用
官方舉例了四個使用場景,其實我們需要的就是這個,這個是詳細的使用舉例,我就不再重複了,看這裡
注意:
每個版本都是放在data\revisions
目錄下的,每個版本對應乙個子目錄,注意這裡的子目錄必須是數字
,否則在瀏覽下看到的是空串,更不支援中文。官方也有說明:
redis快取如何同步資料庫
redis快取如何同步資料庫 redis mysql模式 讀 服務程式先從快取中讀取資料,如果命中,則將資料讀出。如果未命中,則在資料庫中讀取資料,然後將資料寫入到快取中去。更新資料 常見的模式是先到資料庫中寫入,然後刪除快取中的資料。產生的不一致 讀 只是讀資料一般不會有不一致出現。更新 1 資料...
我們該如何設計資料庫
資料庫該如何設計,一直以來都是乙個仁者見仁智者見智的問題。對於某一種資料庫設計,並不能簡單的用好與不好來區分。或許真的應了那句話,沒有最好,只有最適合。討論某種資料庫設計的時候,應該在某種特定的需求環境下討論。下面來討論一下在專案中經常碰到的使用者的 儲存的問題。我在這裡套用之前網路上流行 普通 文...
資料庫載入出錯時該怎麼解決
我想大家都碰到過這樣的情況,很煩這樣的情況發生,因為剛開始時間不會解決,甚是討厭,其實針對資料庫的設定一直就停留在資料庫語句的操作,以及資料庫的附加與分離,表的操作等 而每次碰到無法對該資料庫操作,因為它是唯讀模式,我就只得冒冷汗,嘿嘿,今天同樣的事情再次發生,我就想還是解決一下吧,之前只是在友友的...