软件管理:通过什么方式能保障测试环境与生产环境:表结构、表的初始化数据一致?

88 天前
 yiyiniu

场景描述

软件项目开发过程中:有测试环境、生产环境

  1. 大家经常在测试环境中,数据库里添加表、添加字段、添加了初始化的数据了
  2. 上线生产环境时,总是会发现:某个表的字段没有添加,初始化的一个配置表数据没初始化上。

请问大家有什么好的方式:能通知或者记录或者其他形式,来避免这种配置数据呀、表结构呀遗漏的问题呢?

目前通过 Gitlab 实现代码统一管理; 通过 Navicat 中数据库结构的比较,避免表结构的遗漏; 但是仍有一些初始化的数据,在上线后会遗漏。

3457 次点击
所在节点    程序员
45 条回复
t298
88 天前
Flyway?
jmllx1963
88 天前
forvvvv123
88 天前
把大家测试环境 DB 的建表和修改表权限全回收了,然后做个网页工具管理表结构,测试环境生产环境也只有这个工具有权限改,所有变动只能 网页工具=>改测试环境=>改生产环境; 这样就行了;

然后定个规定,私自搭建测试环境 db 罚钱;
linjian
88 天前
liquibase
InkStone
88 天前
赞同三楼,这种一致性需要流程保障
28Sv0ngQfIE7Yloe
88 天前
alter table 以及 create table 的操作都要放到 migrate 脚本里,并且准备好执行失败的回滚脚本
pangdundun996
88 天前
ddl 也作为交付物放到 git 中管理起来,标准化需求上线 checklist
Mystery0
88 天前
上生产谁的 sql 出问题就扣钱,执行一段时间之后,开发人员自己会想办法做一个流程来避免问题
fds
88 天前
我见过的不少 ORM 都有带版本管理的,会自动应用代码库里的 schema 变更。这些 migration 也可以手动升降。比如:
https://docs.edgedb.com/get-started/migrations
https://hexdocs.pm/ecto_sql/Ecto.Migration.html
killva4624
88 天前
SQL 文件也要版本化管理,V1.0 ~ V1.5 顺序执行,数据库已执行的 SQL 要有对应版本号信息(你甚至可以直接建一个表记录当前版本号)。
基于这点的原则下去管理,GiT 也好、开源工具也好。
nuistzhou
88 天前
dbt ?
NoobNoob030
88 天前
datagrip 表结构对比工具
XiLingHost
88 天前
不要让开发操作数据库,要改就在本地 dev 环境改,测试环境和生产环境一律使用 migration sql 脚本和 init 脚本跑数据库迁移/升级和初始化,这些脚本随自动构建产生的制品提供,比如在 docker 镜像里打包并在服务启动时执行,必须确保幂等性
securityCoding
88 天前
ddl 也得放到发布单 checklist 里面接受 review
leyfung
88 天前
navicat 同步数据,表结构比较
jaylee4869
88 天前
flyway 原生 SQL 可以直接基于版本维护变更,同时支持多数语言 SDK
yiqiao
88 天前
migration 迁移文件呀。别在测试服手动添加表和表字段。
twofox
88 天前
liquibase 和 Flyway 不就是做这个事情的吗
Rennen
88 天前
在某司实习用的确实是三楼的方法
另外还有发布时 checklist
sampeng
88 天前
现在几乎所有语言都有 migration 框架。。。
之前招了一个哥们死活不同意用,嫌弃麻烦和脱裤子放屁,那就让他浪。三天两头上线忘记字段,然后。。然后就老实了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1064262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX