Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 669|回复: 0

基于Git的数据库sql文件的管理——完美解决团队sql操作协同问题

[复制链接]
  • TA的每日心情
    奋斗
    昨天 15:41
  • 签到天数: 781 天

    [LV.10]以坛为家III

    2048

    主题

    2106

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    720164
    发表于 2021-4-28 12:55:31 | 显示全部楼层 |阅读模式

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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-8-22 15:34 , Processed in 0.077956 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表