基于Git的数据库sql文件的管理——完美解决团队sql操作协同问题
基于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.6 修改者发送邮件给大家
修改者以邮件形式发送大家修改了哪些字段,其他项目成员可以去看Git,上面会有对比不同的记录
3.7 同步
其他被同步者把结构跟初始化数据两份sql pull到本地,重新导入自己独立的数据库以达到同步。
基于Git的数据库sql文件的管理——完美解决团队sql操作协同问题的更多相关文章
- 【HICP Gauss】数据库 数据库管理(文件 用户管理 系统权限 对象权限 profile)-7
数据库运行 依赖不同类型的文件 ,数据文件 参数文件 控制文件 redo日志文件 运行日志文件 审计日志文件等 数据文件 就是表空间文件 存储数据库的数据文件 参数文件 用户修改的配置信息 控制文件 ...
- Microsoft SQL Server 2012 管理 (1): 安装配置SQL Server 重点
SQL Server 可以在实例,数据库,列,查询分别指定排序规则 /* Module 1 - working with Clollations */ -- 1.1 Obtain the Instan ...
- git diff获取差异文件中文乱码的解决办法
通过git的diff命令对两个commit id的版本进行差异化的对比.中文文件时出现乱码. git diff 6bded8d0c1fe1746c122121217dc0c88667091089 a9 ...
- MySQL的sql_mode解析与设置,sql文件导入报错解决
在往MySQL数据库中插入一组数据时,出错了!数据库无情了给我报了个错误:ERROR 1365(22012):Division by 0:意思是说:你不可以往数据库中插入一个 除数为0的运算的结果.于 ...
- git ingore添加忽略文件无较的解决方法
一.启动Git Bash并切换到项目目录下 二.执行下列语句: git rm -r --cached . git add . git commit -m 'update .gitignore' 三.O ...
- MySQLFront导入SQL文件报#1113错误解决
- Entity Framework解决sql 条件拼接,完美解决 解决 不支持 LINQ 表达式节点类型“Invoke”【转】
传统的操作数据库方式,筛选数据需要用StringBuilder拼接一大堆的WHERE子句. 在Entity Framework中,代码稍有不慎就会造成巨大性能消耗,如: using(var db=ne ...
- 如何导入大sql文件到虚拟主机mysql数据库
大部分网站虚拟主机为了安全起见,都限制了通过命令或者phpMyAdmin导入大sql文件到mysql数据库,例如godaddy只允许站长通过phpMyAdmin上传不超过2m的sql文件,但实际上我们 ...
- linux 操作之一 如何在linux将本地数据*.sql文件导入到linux 云服务器上的mysql数据库
liunx 版本ubuntu 16.4 mysql 版本 5.6 1)准备*.sql文件 (* 是准备导入的sql文件的名字) 2)liunx 远程客户端 SecureCRT 7.0 alt+p ...
随机推荐
- MySql CPU彪高到百分之1000的排查思路
You need to enable JavaScript to run this app. 原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等情况,可查看当前链接:https:// ...
- HDU1847 Good Luck In CET4 Everybody
大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...
- FIve in a row
Alice and Bob play 5-in-a-row game. They have a playing field of size 10 × 10. In turns they put eit ...
- CodeForces999A-Mishka and Contest
A. Mishka and Contest time limit per test 1 second memory limit per test 256 megabytes input standar ...
- TypeScript - 类型声明、枚举、函数、接口
目录 可定义的类型 类型声明 枚举 函数 接口 可定义的类型 以下所写的并不代表typescript的数据类型,而是在使用过程中可以用作定义的类型 number : 数值类型: string ...
- Dubbo源码分析之 SPI(一)
一.概述 dubbo SPI 在dubbo的作用是基础性的,要想分析研究dubbo的实现原理.dubbo源码,都绕不过 dubbo SPI,掌握dubbo SPI 是征服dubbo的必经之路. 本篇文 ...
- 201871010119-帖佼佼《面向对象程序设计(java)》第六—七周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- ELK 理论小知识
ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...
- 阿里云如何基于标准 K8s 打造边缘计算云原生基础设施
作者 | 黄玉奇(徙远) 阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词 1219 即可下载本文 PPT 及实操演示视频. 导读:伴随 5G.IoT 的发展,边缘 ...
- 冒泡排序(表格说明)(js)
冒泡排序我自己的理解是(假设从大到小): 比较每一对相邻元素的值,如果前面的元素小于后面的元素那么就将它们交换过来,每次排序的比较次数逐次递减,最后的比较次数为1.总的排序轮数为数组长度减1.为了便于 ...