基於Git的資料庫sql文件的管理——完美解決團隊sql操作協同問題

  • 2019 年 10 月 15 日
  • 筆記

基於Git的資料庫sql文件的管理——完美解決團隊sql操作協同問題

1.產生背景

公司開發項目過程中,後台會分為很多種服務,比如web服務,採集服務,都需要去操作資料庫,有的時候甚至前端也會去操作資料庫,修改欄位,增加欄位,刪除欄位,修改初始化數據等。怎麼在各方之間進行同步?本文介紹了一種基於Git(騰訊雲(原Coding))的資料庫sql文件管理方式。

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初始化數據文件如下

其他訂製項目可以用同一個結構sql,但是不同的初始化數據文件,如南通項目IBMS_InitDataNT.sql;銀川項目用IBMS_InitDataYC.sql

3.2.1 表結構文件

原則:所有人都需要自己建立獨立的資料庫來調試

IBMS_Structure.sql

導入步驟

打開資料庫管理工具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

導入步驟

同上。

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.5 修改者發送郵件給大家

修改者以郵件形式發送大家修改了哪些欄位,其他項目成員可以去看Git,上面會有對比不同的記錄

3.6 同步

然後把結構跟初始化數據兩份sql pull到本地,重新導入自己獨立的資料庫以達到同步。