V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
IceBay
V2EX  ›  Go 编程语言

请教: Go 项目,大家偏向如何管理数据库迁移?

  •  
  •   IceBay · 2021-02-07 11:13:49 +08:00 · 3478 次点击
    这是一个创建于 1168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教:

    大家偏向怎么管理 Go 项目的 Migrations 的?

    用 Gorm 的 Auto migration 吗?(对我来说,像一个黑箱)

    自己写 sql 执行并记录?诸如 https://github.com/golang-migrate/migratehttps://github.com/rubenv/sql-migrate

    第 1 条附言  ·  2021-02-07 19:57:59 +08:00
    17 条回复    2021-09-12 21:36:18 +08:00
    LoNeFong
        1
    LoNeFong  
       2021-02-07 11:15:34 +08:00   ❤️ 1
    migrate+1 自己写并记录版本号
    YouLMAO
        2
    YouLMAO  
       2021-02-07 11:31:54 +08:00
    dba 迁移数据, 你们是业务人操作的????? 惊艳
    ihipop
        3
    ihipop  
       2021-02-07 11:44:15 +08:00 via Android
    @YouLMAO 先了解一下什么是 project Migrations
    YouLMAO
        4
    YouLMAO  
       2021-02-07 12:27:02 +08:00 via Android
    @ihipop 这语气说得,你公司市值到 1000 亿没有?
    大公司加减字段都是提单 dba 操作的,业务没有 dml 权限的,业务操作数据库迟早倒闭
    renyijiu
        5
    renyijiu  
       2021-02-07 12:29:53 +08:00   ❤️ 1
    flyway 可以吧
    huobazi
        6
    huobazi  
       2021-02-07 13:18:10 +08:00   ❤️ 1
    自己写 migrate 用的 sql,发布时写 release note 提交表单,交由 Moving Team 和 DBA 去做 审核 + moving
    leoleoasd
        7
    leoleoasd  
       2021-02-07 14:07:49 +08:00
    Mitt
        8
    Mitt  
       2021-02-07 15:20:38 +08:00
    @YouLMAO #4 啧啧啧,一副没见过市面的样子
    stirlingx
        9
    stirlingx  
       2021-02-07 15:30:23 +08:00
    小项目在代码里面 migrate 。大项目用 sql 脚本,提交到 sql 管理平台,由 dba 审核升级
    IceBay
        10
    IceBay  
    OP
       2021-02-07 15:30:29 +08:00
    @leoleoasd #7 感谢,粗略了解过这个工具,感觉接近 Auto Migration 了。
    IceBay
        11
    IceBay  
    OP
       2021-02-07 15:32:11 +08:00
    @YouLMAO #2 不同公司有不同的操作咯。而且专业人员负责,也要写 sql 嘛
    stirlingx
        12
    stirlingx  
       2021-02-07 15:32:33 +08:00
    开源 sql 审核平台 https://github.com/hhyo/Archery
    janxin
        13
    janxin  
       2021-02-07 15:51:50 +08:00
    migrate 用 SQL 管理啊...
    tairan2006
        14
    tairan2006  
       2021-02-07 16:28:59 +08:00 via Android
    自己写 sql…

    小项目直接在 idea 里面改数据库,然后从数据库重新生成 model…
    LoNeFong
        15
    LoNeFong  
       2021-02-07 16:37:04 +08:00
    感谢楼主, 已 B 某傻 x, 没想到风气这么差, 仿佛就他见过世面.可能市值 1000yi 的公司开发测试的时候都是请 dba 来手把手喂饭.
    saber000
        16
    saber000  
       2021-02-08 13:49:11 +08:00
    简单用过几个框架:
    1. beego:使用 bee migrate
    2. gorm:使用 gormigrate

    其他没有 orm 的项目,之前是手撸了个框架,通过命令自动在一个包里面给一个类型生成两个方法:

    - func (m *Migration) MigrateXXXXX(db DB) error
    - func (m *Migration) RollbackXXXXX(db DB) error

    其中 XXXXX 是一个自增的 ID,函数内容自己写,然后运行的时候通过反射取出 Migration 的方法进行排序,然后对比数据库记录往后进行。
    后来发现这种方法可以用 golang-migrate 来替代。
    tianzhou
        17
    tianzhou  
       2021-09-12 21:36:18 +08:00
    可以看一下 bytebase.com

    支持基于 GitOps 的 DDL 管理, 相当于带了界面的 golang-migrate,用 Golang+Vue 写的,也开源 https://github.com/bytebase/bytebase
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2769 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:10 · PVG 23:10 · LAX 08:10 · JFK 11:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.