基於Git的數據庫sql文件的管理——完美解決團隊sql操做協同問題

基於Git的數據庫sql文件的管理——完美解決團隊sql操做協同問題

1.產生背景

公司開發項目過程當中,後臺會分爲不少種服務,好比web服務,採集服務,都須要去操做數據庫,有的時候甚至前端也會去操做數據庫,修改字段,增長字段,刪除字段,修改初始化數據等。怎麼在各方之間進行同步?本文介紹了一種基於Git(騰訊雲(原Coding))的數據庫sql文件管理方式。html

2.以前沒用Git管理數據庫出現的問題

2.1 用同一個庫調試帶來的問題

  • 前端A,web服務端B,採集端C共用一個數據庫調試。前端A調試時,修改了數據庫的某些數據,致使服務端B跟採集端C出現異常,由於A在調試問題沒有及時通知到你們。浪費了B跟C的調試時間。
  • 前端A,web服務端B,採集端C共用一個數據庫調試。採集端C增長了字段,調試過程當中,沒及時通知到你們,致使服務端B取該表數據不成功,前端顯示異常,浪費了A跟B的時間

2.2 數據庫sql版本不統一帶來的問題

採集端C因爲1個月沒更新,可是數據庫版本已經發布了多個,採集端編碼好,統一發布以後,採集端不能運行成功,由於數據庫在服務端B增長修改了字段,而採集端沒有同步形成。前端

3.解決方案

3.1 Sql文件的建立

怎麼把各方的數據庫版本同步,根據代碼管理規範,我想到了Git,用Git來管理Sql文件。Sql分紅兩份文件,一份是IBMS_Structure.sql,數據庫結構文件;另外一份是IBMS_InitData.sql初始化數據文件以下
mysql

其餘定製項目能夠用同一個結構sql,可是不一樣的初始化數據文件,如南通項目IBMS_InitDataNT.sql;銀川項目用IBMS_InitDataYC.sqlgit

3.2 Navicat將兩份文件導入Mysql

3.2.1 表結構文件

原則:全部人都須要本身創建獨立的數據庫來調試web

IBMS_Structure.sqlsql

導入步驟數據庫

打開數據庫管理工具navicat.exe,工具

3.2.1.1 找到ipbms_sync表

3.2.1.2 右擊表名,選擇運行SQL文件

3.2.1.3 選擇表結構SQL文件

3.2.1.4 運行表結構SQL文件

3.2.1.5 完成後錯誤爲0

3.2.1.6 右擊表,選擇刷新後可看到表

3.2.2 表初始化數據

IBMS_InitData.sql編碼

導入步驟3d

同上。

3.3 將上述兩個文件託管在Git平臺上

具體可參照Git管理代碼類文章

3.4 數據庫字段的新增修改,初始化數據的修改。

不管是A或者B或者C修改了數據庫的結構或初始化,導出兩份文件,一份結構,一份初始化數據(須要刪除其餘非初始化的垃圾髒數據)

3.4.1 導出結構

右鍵要導出的表,單擊數據傳輸

3.4.1.1 選擇文件

3.4.1.2 選擇導出路徑到桌面

3.4.1.3 輸入導出名稱爲IBMS_Structure

3.4.1.4 選擇建立表,取消插入記錄

3.4.6最後點開始點肯定便可

3.4.7 0錯誤,100%數據傳輸

3.4.2 導出初始化數據文件

3.4.2.1 注意要勾選存儲過程與事件

3.4.2.2 取消建立表,勾選插入記錄

3.4.2.3 其餘同上3.4.1 導出結構

3.5 修改以後的兩份sql上傳到Git平臺

git add . 
git commit -m "B修改了xxx字段"
git push origin master

具體可參照Git管理代碼類文章

3.6 修改者發送郵件給你們

修改者以郵件形式發送你們修改了哪些字段,其餘項目成員能夠去看Git,上面會有對比不一樣的記錄

3.7 同步

其餘被同步者把結構跟初始化數據兩份sql pull到本地,從新導入本身獨立的數據庫以達到同步。

相關文章
相關標籤/搜索