基於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 Navicat將兩份文件導入Mysql
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到本地,重新導入自己獨立的資料庫以達到同步。