團隊開發時該如何同步資料庫變更到本地

2021-09-16 13:08:05 字數 2199 閱讀 6633

相信各位小夥伴在進行團隊開發時都遇到過這個問題:一般開發時,各個團隊成員使用的是自己開發環境上的本地資料庫,這個資料庫只有自己在使用,開發過程中,資料庫是會經常變動的,比如其他小夥伴新增了乙個字段,或者新增了一張表,那麼此時問題就來了,我如何把其他小夥伴進行的資料庫變更同步到我本地來?不然我更新**後很可能各種報錯。這個雖然是乙個小問題,大不了直接再去拷貝乙份最新的資料庫出來,但是每次都這樣,非常低效和繁瑣,那這個問題該如何解決?

解決方式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 資料...

我們該如何設計資料庫

資料庫該如何設計,一直以來都是乙個仁者見仁智者見智的問題。對於某一種資料庫設計,並不能簡單的用好與不好來區分。或許真的應了那句話,沒有最好,只有最適合。討論某種資料庫設計的時候,應該在某種特定的需求環境下討論。下面來討論一下在專案中經常碰到的使用者的 儲存的問題。我在這裡套用之前網路上流行 普通 文...

資料庫載入出錯時該怎麼解決

我想大家都碰到過這樣的情況,很煩這樣的情況發生,因為剛開始時間不會解決,甚是討厭,其實針對資料庫的設定一直就停留在資料庫語句的操作,以及資料庫的附加與分離,表的操作等 而每次碰到無法對該資料庫操作,因為它是唯讀模式,我就只得冒冷汗,嘿嘿,今天同樣的事情再次發生,我就想還是解決一下吧,之前只是在友友的...