• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ifconfig
V2EX  ›  程序员

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

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

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

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

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

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

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

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

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

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

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