V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ifconfig
V2EX  ›  程序员

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

  •  
  •   ifconfig · 2015-09-07 18:14:10 +08:00 · 3056 次点击
    这是一个创建于 3357 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    你可以试试。
    ifconfig
        4
    ifconfig  
    OP
       2015-09-07 18:42:31 +08:00
    @lijinma 谢谢
    zava
        5
    zava  
       2015-09-07 19:08:18 +08:00
    有对比数据库差异, 这个应该不是个好方案.

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

    如果是 PHP, 可以考虑使用 Phinx (没用过...)
    ifconfig
        6
    ifconfig  
    OP
       2015-09-07 19:12:40 +08:00
    @zava 谢谢,恰好用的就是 PHP ,有机会研究一下
    idblife
        7
    idblife  
       2015-09-08 11:30:33 +08:00
    @ifconfig
    开发环境--测试环境--沙箱环境--灰度环境--线上
    songco
        8
    songco  
       2015-09-08 16:01:24 +08:00
    数据库做在虚拟机上, 打 snapshot, 定期(比如每天)revent...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2754 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.