基于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操作协同问题的更多相关文章

  1. 【HICP Gauss】数据库 数据库管理(文件 用户管理 系统权限 对象权限 profile)-7

    数据库运行 依赖不同类型的文件 ,数据文件 参数文件 控制文件 redo日志文件 运行日志文件 审计日志文件等 数据文件 就是表空间文件 存储数据库的数据文件 参数文件 用户修改的配置信息 控制文件 ...

  2. Microsoft SQL Server 2012 管理 (1): 安装配置SQL Server 重点

    SQL Server 可以在实例,数据库,列,查询分别指定排序规则 /* Module 1 - working with Clollations */ -- 1.1 Obtain the Instan ...

  3. git diff获取差异文件中文乱码的解决办法

    通过git的diff命令对两个commit id的版本进行差异化的对比.中文文件时出现乱码. git diff 6bded8d0c1fe1746c122121217dc0c88667091089 a9 ...

  4. MySQL的sql_mode解析与设置,sql文件导入报错解决

    在往MySQL数据库中插入一组数据时,出错了!数据库无情了给我报了个错误:ERROR 1365(22012):Division by 0:意思是说:你不可以往数据库中插入一个 除数为0的运算的结果.于 ...

  5. git ingore添加忽略文件无较的解决方法

    一.启动Git Bash并切换到项目目录下 二.执行下列语句: git rm -r --cached . git add . git commit -m 'update .gitignore' 三.O ...

  6. MySQLFront导入SQL文件报#1113错误解决

  7. Entity Framework解决sql 条件拼接,完美解决 解决 不支持 LINQ 表达式节点类型“Invoke”【转】

    传统的操作数据库方式,筛选数据需要用StringBuilder拼接一大堆的WHERE子句. 在Entity Framework中,代码稍有不慎就会造成巨大性能消耗,如: using(var db=ne ...

  8. 如何导入大sql文件到虚拟主机mysql数据库

    大部分网站虚拟主机为了安全起见,都限制了通过命令或者phpMyAdmin导入大sql文件到mysql数据库,例如godaddy只允许站长通过phpMyAdmin上传不超过2m的sql文件,但实际上我们 ...

  9. linux 操作之一 如何在linux将本地数据*.sql文件导入到linux 云服务器上的mysql数据库

    liunx 版本ubuntu 16.4 mysql 版本  5.6 1)准备*.sql文件 (* 是准备导入的sql文件的名字) 2)liunx 远程客户端  SecureCRT 7.0 alt+p ...

随机推荐

  1. Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis

    经过 Spring Boot 的整合封装与自动化配置,在 Spring Boot 中整合Redis 已经变得非常容易了,开发者只需要引入 Spring Data Redis 依赖,然后简单配下 red ...

  2. TestNG系列(二)TestNG注解

    前言 TetsNG提供了很多注解,允许测试人员灵活地组织测试用例 一.@Test @Tets是TestNG的核心注解,被注解的方法,表示为一个测试方法. description属性 @Test(des ...

  3. Vue组件应用

    Vue的组件是可复用的 Vue 实例,且带有一个名字 .我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用.因为组件是可复用的 Vue 实例,所以它们与 ne ...

  4. powerline字体安装

    安装命令 git clone https://github.com/powerline/fonts ./install.sh 了解powerline ->美化自己的命令行环境,增加漂亮的状态行, ...

  5. git 使用详解(4)—— commit -a -m/diff --staged/rm/mv

    查看已暂存和未暂存的更新 实际上 git status的显示比较简单,仅仅是 列出了(修改过的.新创建的.已经暂存但未提交的)文件,如果要查看具体修改了什么地方,可以用git diff 命令.稍后我们 ...

  6. 基于 SOA 架构,创建 ego-search-web 项目-solr集群-zookeeper集群

    项目架构 Ego-search-web 服务的消费者,ego-rpc 服务提供者 建立 ego-search-web 项目 继承:ego 依赖:ego-common   ego-rpc-service ...

  7. 胸部CT提取分割肺部

    1. 肺部分割提取简介 在处理胸部CT时,我们常常需要获取肺部的一个mask,也就是将肺部结构从数据中提取出来.二维图像还好说,但是三维图像就会变得复杂复杂一点.肺部的分割常常做后续操作的预处理,所以 ...

  8. Dubbo学习系列之七(分布式订单ID方案)

    既然选择,就注定风雨兼程! 开始吧! 准备:Idea201902/JDK11/ZK3.5.5/Gradle5.4.1/RabbitMQ3.7.13/Mysql8.0.11/Lombok0.26/Erl ...

  9. 【Java Web开发学习】Spring MVC文件上传

    [Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...

  10. 【Ubuntu 16.04.2_64】系统配置

    Ubuntu 16.04.2_64系统配置 转载:http://www.cnblogs.com/yangchongxing/p/9049897.html Ubuntu Server服务指南:https ...