V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ifconfig
V2EX  ›  程序员

正式数据库和测试数据库差异问题

  •  
  •   ifconfig · Sep 7, 2015 · 3449 views
    This topic created in 3898 days ago, the information mentioned may be changed or developed.

    现在的问题是大家都在测试环境下做开发.
    许多组员改了数据库结构可能没记下来或者忘记了,当代码上线正式环境后就会出现各种小问题,请问这个大家是怎么解决的?

    有对比数据库差异的工具么?还是手工记录改过的结构?

    8 replies    2015-09-08 16:01:24 +08:00
    idblife
        1
    idblife  
       Sep 7, 2015
    toad 可以帮到你,但是你们的发版流程是有问题的,工具只能帮助你,但解决不了实际问题。
    ifconfig
        2
    ifconfig  
    OP
       Sep 7, 2015
    @idblife 请教一下正确的发版流程是怎样的呢?
    lijinma
        3
    lijinma  
       Sep 7, 2015
    我这边有两个方案,你可以试一下,看你觉得哪个合适?

    ( 1 )一种是使用 Migration ,就是每次的数据库修改或增加或删除都是都脚本的。通过脚本来修改,而不是每个人使用 sql ,而这个脚本是代码的一部分,比如 PHP 的 一个框架 Laravel 的 Migration 。

    ( 2 )第二种是我现在在用的,一个软件: MySQL Workbench ,这个软件会有一个 Model 的感念,这个 Model 就是类似于你的建库脚本,所有人维护这个 Model 文件,然后数据库使用“同步”功能,每次你点几个按钮,就可以看到这个 Model 与你的数据库的差异,然后执行。

    Workbench 这个文件进版本管理,缺点是通过文件的变化看不出来 SQL 的修改,但是好处就是他们的“同步”功能。

    你可以试试。
    ifconfig
        4
    ifconfig  
    OP
       Sep 7, 2015
    @lijinma 谢谢
    zava
        5
    zava  
       Sep 7, 2015
    有对比数据库差异, 这个应该不是个好方案.

    业界上的解决方案是将数据库也进行版本化管理.
    比如 ruby 的 rails 自带的 Active Record Migrations
    或者是 Java 中的 Flyway / Liquibase

    如果是 PHP, 可以考虑使用 Phinx (没用过...)
    ifconfig
        6
    ifconfig  
    OP
       Sep 7, 2015
    @zava 谢谢,恰好用的就是 PHP ,有机会研究一下
    idblife
        7
    idblife  
       Sep 8, 2015
    @ifconfig
    开发环境--测试环境--沙箱环境--灰度环境--线上
    songco
        8
    songco  
       Sep 8, 2015
    数据库做在虚拟机上, 打 snapshot, 定期(比如每天)revent...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1046 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 18:23 · PVG 02:23 · LAX 11:23 · JFK 14:23
    ♥ Do have faith in what you're doing.