團隊開發時該如何同步數據庫變動到本地

多人開發時的數據庫同步問題

相信各位小夥伴在進行團隊開發時都遇到過這個問題:通常開發時,各個團隊成員使用的是本身開發環境上的本地數據庫,這個數據庫只有本身在使用,開發過程當中,數據庫是會常常變更的,好比其餘小夥伴添加了一個字段,或者新增了一張表,那麼此時問題就來了,我如何把其餘小夥伴進行的數據庫變動同步到我本地來?否則我更新代碼後極可能各類報錯。這個雖然是一個小問題,大不了直接再去拷貝一份最新的數據庫出來,可是每次都這樣,很是低效和繁瑣,那這個問題該如何解決?php

解決方式1:

開發時團隊成員共用一套數據庫,直接把數據庫的變動同步到這個數據庫上就好了。這個方法簡單粗暴,不過仍是有不爽的地方: 共用數據庫的話,數據就是共用的,我開發測試一個功能時,數據有可能被其餘小夥伴改動了;還有這種方式數據庫變動也要單獨作版本控制。html

解決方式2;

每一個小夥伴都使用本地庫開發,有數據庫變動時給其餘人發郵件。
這種方式很是繁瑣,低效,並且極可能其餘小夥伴常常忘記發的狀況。git

解決方式3:

使用開源的數據庫版本控制工具。好比dbv ,這個工具安裝配置極其簡單,也能知足如今的使用要求,其實咱們的需求也並很少,主要是:數據庫

  1. 對數據庫的變動進行版本控制,這個是必須的,對數據庫的變動必需要記錄下來。
  2. 我本地的數據庫如何同一鍵同步其餘小夥伴作的數據庫變更,好比小張增長了一個字段,我能夠一鍵同步到我本地,不至於我本地各類頁面報錯。
    目前這個工具這兩個大需求都能知足,下面就介紹下如何安裝使用吧。

安裝及配置

其實如何安裝和配置文檔上說的都很詳細,文檔傳送門, 這裏我再重複一遍。apache

1. 下載安裝

下載後解壓到apache的站點目錄下,或者把它放到別的目錄,配置爲一個虛擬站點也行。
好比我就把它配置爲了一個虛擬站點,DocumentRoot指向根目錄便可:瀏覽器

httpd-vhosts.conf服務器

Listen 7845
<VirtualHost *:7845>
    
    DocumentRoot "E:\devsofts\DBVC\shangsheng"
    ServerName localhost
    ErrorLog "logs/localhost_123-error.log"
    CustomLog "logs/localhost_123_access.log" common
    DirectoryIndex index.html index.php
</VirtualHost>

重啓apachesvn

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目錄下的,每一個版本對應一個子目錄,注意這裏的子目錄必須是數字,不然在瀏覽下看到的是空串,更不支持中文。官方也有說明:

結語

OK, 這個工具就介紹完了,各位小夥伴能夠嘗試一下~,若是你們有更好的管理方式,能夠在留言中探討一下,相互學習。若是個人文章對你有幫助的話,動動手指點個贊吧~ 謝謝!

相關文章
相關標籤/搜索