基于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. luogu P1938 [USACO09NOV]找工就业Job Hunt

    题目描述 奶牛们正在找工作.农场主约翰知道后,鼓励奶牛们四处碰碰运气.而且他还加了一条要求:一头牛在一个城市最多只能赚D(1≤D≤1000)美元,然后它必须到另一座城市工作.当然,它可以在别处工作一阵 ...

  2. ios开发入门- WebView使用

    转自:http://mahaile.blog.51cto.com/2891586/1021515/ 目标 : webview使用 在一些移动app中,有时程序会载入 外表的html 界面, andro ...

  3. 主题: 002.04 Tkinter 星空大战

    为了更加熟练 Tkinter 的应用,决定只用 Tkinter 来写一个游戏,而不是用 Pygame, 在过程中,出了很多很大的问题,最后留了一点已知的问题,不想在花时间去找出来,不过整个程序算跑的没 ...

  4. BZOJ 1861书架

    小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些书太有吸引 ...

  5. 通过ansible自动化部署zabbix应用

    zabbix在实际的应用中,可能需要监控的主机非常多,而每个主机的操作系统类型.版本也都不尽相同,在这种环境下,通过手动安装zabbix的agent端已经不现实了,此时就需要借助自动化工具完成zabb ...

  6. Nginx的事件循环

    首先事件循环的起点就是监听端口获取连接,我们可以在ngx_event_core_module模块的ngx_event_process_init函数中看到如下的代码: /* for each liste ...

  7. 【Vuejs】301- Vue 3.0前的 TypeScript 最佳入门实践

    前言 我个人对更严格类型限制没有积极的看法,毕竟各类转类型的骚写法写习惯了. 然鹅最近的一个项目中,是 TypeScript+ Vue,毛计喇,学之...-真香! 1. 使用官方脚手架构建 npm i ...

  8. python基础入门 整型 bool 字符串

    整型,bool值,字符串 一.整型 整型十进制和二进制 整型:整型在Python中的关键字用int来表示; 整型在计算机中是用于计算和比较的 可进行+ - * / % //(整除) **(幂运算) 十 ...

  9. 手动SQL注入原理分析与实践

    代码仓库 本文所用代码的代码库地址: 点击这里前往Github仓库 了解SQL注入 定义 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞.可以用它来从数 ...

  10. OpenWrite一款博客可一文多发的实用工具

    前言 许多网友想看一文多发的OpenWrite,今天,它来了!别问落地价,因为内测无价! 这款实用工具,可支持十大博客平台一键发布,是博主们的发文神器 你看它多种平台.一键管理.后台界面优雅.还有签到 ...