fanpei0121
V2EX  ›  问与答

多人开发,数据库结构怎么同步?

  •  1
     
  •   fanpei0121 · Jan 7, 2020 · 7098 views
    This topic created in 2497 days ago, the information mentioned may be changed or developed.

    请问大佬流行的解决方案有哪些啊?

    36 replies  •  2020-01-08 02:07:42 +08:00
    qmzhixu
    qmzhixu
    Jan 7, 2020
    1
    navicat 的结构同步工具
    SjwNo1
    SjwNo1
    Jan 7, 2020
    2
    写个 sql 文件?
    fanpei0121
    fanpei0121
    OP
    Jan 7, 2020
    3
    比如 A 开发的时候改变了表结构,同事 B 也改变了另一张表的结构。最终数据库怎么把 2 张表的结构统一,有没有解决方法
    hsk9044
    hsk9044
    Jan 7, 2020
    4
    既然是多人开发, 如果是开发相同功能, 数据库不应该是连同一个吗? 如果是功能不同, 那参考 1#的工具
    fanpei0121
    fanpei0121
    OP
    Jan 7, 2020
    5
    @hsk9044 但是本地开发,开发人员都是安装的本地数据库,你的意思是都用一个数据库?
    murmur
    murmur
    Jan 7, 2020
    6
    我们是数据库由专人负责修改
    VictorJing94
    VictorJing94
    Jan 7, 2020
    7
    所以你们数据库也是独立设计嘛[狗头],不都是大佬先开会,统一架构,还有 ER 图,然后确定数据库后再分模块分功能去开发嘛....
    fanpei0121
    fanpei0121
    OP
    Jan 7, 2020
    8
    @VictorJing94 额。。。。小公司都是开发人员自己建表。。<(..)>
    sxw11
    sxw11
    Jan 7, 2020❤️1
    9
    不应该是共用一个开发或者测试数据库吗,人多了本地库很麻烦,非要那样就每个人提交代码的时候把数据库变动的 sql 脚本也提交了
    SuperMari0
    SuperMari0
    Jan 7, 2020
    10
    统一连一个开发用的库就好了
    optional
    optional
    Jan 7, 2020❤️1
    11
    migration,
    helionzzz
    helionzzz
    Jan 7, 2020
    12
    就算初始数据有出入,所有人数据表结构不应该是一样的么。如果期间发现有要改变的,不应该通知所有人一起改么。。你们开发中间团队完全不交流的?
    luckyrayyy
    luckyrayyy
    Jan 7, 2020
    13
    肯定使用公共开发库啊,每人一个本地库也太麻烦了。
    fanpei0121
    fanpei0121
    OP
    Jan 7, 2020
    14
    @luckyrayyy 是的,决定都连测试服数据库了
    evlos
    evlos
    Jan 7, 2020 via Android
    15
    Migration
    di94sh
    di94sh
    Jan 7, 2020 via iPhone
    16
    如果是 django orm 或者 sqlalchemy 这种 migrate 做的比较完善,migrate 文件 有单独的文件夹存放. merge 了代码运行迁移脚步就好了。如果用的数据库工具没有 migrate 功能,可以用 sqlalchemy 的迁移工具 alembic 需要自己手写迁移脚步,其实就是 DDL
    opengps
    opengps
    Jan 7, 2020
    17
    共享连接同一个数据库
    Orenoid
    Orenoid
    Jan 7, 2020
    18
    把数据库结构纳入版本管理
    oatw
    oatw
    Jan 7, 2020 via iPhone❤️2
    19
    看到这个问题,再次庆幸自己选择 Rails 作为后端开发的主要工具。
    wangkun025
    wangkun025
    Jan 7, 2020
    20
    rails 用 migration。
    但偶尔也会出问题。
    adrianXu
    adrianXu
    Jan 7, 2020
    21
    java 有 flyway liquibase 这种工具
    soli
    soli
    Jan 7, 2020
    22
    建表 SQL 写在 sql 文件中。
    所有 sql 文件作为源码文件提交版本库。
    剩下的就和代码一样的流程了。
    BALDOOR
    BALDOOR
    Jan 7, 2020 via Android
    23
    我们用文件把新增 /修改的 sql 记录下来
    运行时出错时,通过分析 sql 报错信息
    再去查找文件去修正数据库
    目前运行情况良好,感觉还挺 nice 的
    fx
    fx
    Jan 7, 2020
    24
    Migration
    af463419014
    af463419014
    Jan 7, 2020
    26
    建议规范一下开发流程
    开发前先写设计文档,包括技术方案和表结构设计等,然后大家评审,评审完成后再进行代码开发
    一般白天写文档,晚上花 1-2 小时完成评审,也就多出一天的研发周期,能为将来避免很多不必要的麻烦
    lygmqkl
    lygmqkl
    Jan 7, 2020
    27
    migrate
    phpcxy
    phpcxy
    Jan 7, 2020
    28
    写数据库迁移文件
    lazypu
    lazypu
    Jan 7, 2020
    29
    肯定得连接同一个数据库, 其它的无论什么方案都不如同一个数据库来得方便, 而且只是开发阶段
    minigo
    minigo
    Jan 7, 2020
    30
    用 orm 的没这个问题,用纯 sql 的链同一个库吧。不然开发完你会后悔的
    VictorJing94
    VictorJing94
    Jan 7, 2020
    31
    @fanpei0121 楼下老哥都说问题了...你们流程不对
    另外我怎么没收到提示...站长帮忙看看 @livd
    agagega
    agagega
    Jan 7, 2020 via iPhone
    32
    原来这年头还有后端框架不用 Migration 的吗😂
    nanwangnongfu
    nanwangnongfu
    Jan 7, 2020
    33
    总结一下
    1,链接同一个测试库
    2,使用 migratiion,更新代码,执行 migration 命令
    3,更改写入 sql 文件,更新代码,手动执行
    dcalsky
    dcalsky
    Jan 7, 2020
    34
    这个问题之前研究过。

    ## Migration
    Code first 的解决方案(有编程语言依赖):依赖你 ORM 提供的 migration 工具,如楼上提到的 Django,sqlalchemy 等。

    Basebase first 解决方案(无编程语言依赖):sqitch 或者 flyway,都是工具,别管用什么语言开发的。

    ## 多人协作

    肯定要用 git 管理这些 migrations,然后建议开一个数据库的线上 beta 版本,等稳定了再 migrate 到 prod 版本上。

    流程一般是:开发者 A 改动了 schema,生成 migrations 并 push 到仓库 -> 开发者 B pull 这些 migrations,然后 migrate 到本地的数据库。至于你们什么时候想 push 到 beta,以及 CI/CD 的其他事情,别的贴再讨论吧。
    Leigg
    Leigg
    Jan 7, 2020 via Android
    35
    不要瞎搞,这哪有完美方案,到时候一堆问题,公司网装一个公共的 mysql 才是办法
    zhuzhibin
    zhuzhibin
    Jan 8, 2020 via iPhone
    36
    都说 migration,那我请教下随着项目变大业务变更大,导致迁移文件越来越多,要怎么维护比较好?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   600 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 22:52 · PVG 06:52 · LAX 14:52 · JFK 17:52
    ♥ Do have faith in what you're doing.