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

2015-09-07 18:14:10 +08:00
 ifconfig

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

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

3075 次点击
所在节点    程序员
8 条回复
idblife
2015-09-07 18:24:45 +08:00
toad 可以帮到你,但是你们的发版流程是有问题的,工具只能帮助你,但解决不了实际问题。
ifconfig
2015-09-07 18:31:10 +08:00
@idblife 请教一下正确的发版流程是怎样的呢?
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
2015-09-07 18:42:31 +08:00
@lijinma 谢谢
zava
2015-09-07 19:08:18 +08:00
有对比数据库差异, 这个应该不是个好方案.

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

如果是 PHP, 可以考虑使用 Phinx (没用过...)
ifconfig
2015-09-07 19:12:40 +08:00
@zava 谢谢,恰好用的就是 PHP ,有机会研究一下
idblife
2015-09-08 11:30:33 +08:00
@ifconfig
开发环境--测试环境--沙箱环境--灰度环境--线上
songco
2015-09-08 16:01:24 +08:00
数据库做在虚拟机上, 打 snapshot, 定期(比如每天)revent...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/218917

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX