基于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到本地,从新导入本身独立的数据库以达到同步。

相关文章
相关标签/搜索