部署时的sql版本维护

部分同学可能有如下烦恼
1、没有维护更新脚本,部署时不知道需要执行哪些脚本,完全看测试现场复测,遇到即修改
2、每个开发自己维护,部分开发忘记在部署时进行汇总,未能执行脚本
3、每个需求都有维护脚本的功能,叫脚本维护表(demand_sql),但是不是所有人都能做到脚本次次维护,所以还有遗漏

其实,已经找到了一个解决方案,就是测试环境进行部署时,也验证执行脚本,执行失败即提bug,但是因为种种原因(开发、测试共用数据库,开发直接在数据库执行sql,测试未经培训,sql由开发自己执行),很难实现

先说一下我现在了解的办法,两种:
1、脚本维护表,匹配需求;需求发版时生成脚本
2、脚本在代码中配置,维护版本脚本文件,在测试环境部署时自动执行,出现未配置即提bug

作为经常懒得维护sql的我,如何解决正式环境部署时的脚本问题,我的办法如下:
1、数据库比对-sql先行法首先要求,所有sql不能写select * 语句,那就算数据库先更新,也不影响;每次更新前,先比对客户环境数据库与公司测试环境数据库,比对生成脚本,在客户数据库环境执行脚本。
优势:什么都不需要维护;不足:客户现场必须有外网,且数据库可以外网访问(22端口开放也行,可以通过代理跳转);会出现数据库先于代码执行,新增无所谓,删除和修改字段不行
2、数据库比对-版本记录法:每次主干拉分支打版是,执行程序,记录当前数据库的表结构;进行跨版本更新时,比对两个版本,得到待执行脚本
优势:不会出现数据库先行;不足:需要次次记录表结构(其实可以做到版本发布的自动化里);基本只有一套测试数据库环境,只能大版本更新时使用,且会出现些许差异;对已经提测,但是未测试通过的数据库,还是会出现数据库先行;还是需要外网
3、数据库与代码比对法该方法局限性较高,需要结合代码(建议使用tk.mybatis框架,所有和数据库对接的bean都有注解);两步执行,在客户环境执行对比,缺失哪些字段,获取到字段后,在公司环境获取脚本(需要知道字段类型长度啥的)
优势:网络要求较低,可以先向日葵远程客户电脑再远程服务器;不会出现数据库先行;不足:代码格式固定,且要新增代码与数据库对比,增大部署包容量;只能判断字段是否缺失,如果修改字段长度,无法判断;操作复杂

以上三种办法,我都用过,不过第二种基本因为要维护每个数据库版本,不用了,如果可以直接连接客户数据库,基本都是使用方法一,如果需要使用向日葵跳转,使用方法三
ps:所有的方法,都要结合实际,我之所以有这么多方案,是我原来公司要求是使用脚本维护,和需求对应,但是又不硬性(你不维护,根本没人知道,除非到部署时发现报错),所以自己写了工具程序做这些事

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值