edk24
V2EX  ›  问与答

大家是如何把开发环境与生产环境表结构合并的?

By edk24 at 2020 年 1 月 11 日 · 5450 次点击

偶尔会遇到一些二开项目, 需要单独导出一份数据库, 用来二开.

开发完成后, 可能追加了表, 追加 /修改了字段. 大家是怎么把表结构同步到生产环境的呢?

目前我们的做法是, 把变更的字段记录下来. 等部署上线时逐一去修改.

有没有更好的办法 /工具?

16 条回复  •  2020-01-12 13:34:08 +08:00
mgcnrx11
   1
mgcnrx11  
   2020 年 1 月 11 日 via iPhone
liquibase ?
murmur
   2
murmur  
   2020 年 1 月 11 日
测试环境建表的时候就得准备 sql 语句,然后在仿真环境跑一遍,测试通过才能执行到正式环境
webgrin
   3
webgrin  
   2020 年 1 月 11 日
@mgcnrx11 有没有更简单的方法,不依赖特定工具的。同样有数据库合表的这个需求。
liuzhaowei55
   4
liuzhaowei55  
   2020 年 1 月 11 日 via Android
flyway
webgrin
   5
webgrin  
   2020 年 1 月 11 日   ❤️ 1
刚刚看来,Navicat 自带有这个表结构同步工具。商业版也不贵。
felixin
   6
felixin  
   2020 年 1 月 11 日 via Android
换用 mongodb ?
295464512
   7
295464512  
   2020 年 1 月 11 日
Navicat 结构同步妥妥的
charlie21
   8
charlie21  
   2020 年 1 月 11 日 via Android
sql 语句直接操作阿
jugelizi
   9
jugelizi  
   2020 年 1 月 11 日
哦
你们不先灰度吗
开发直接到生产
JJstyle
   10
JJstyle  
   2020 年 1 月 11 日 via iPhone
我们是会把每一期的数据库更新写到部署文档去的,领导按照部署文档操作即可。
schemacs
   11
schemacs  
   2020 年 1 月 11 日   ❤️ 2
如果是 mysql 的话 `mysqldbcompare --difftype=sql --run-all-tests --skip-row-count --skip-object-compare --changes-for=server2 [email protected]:3306 [email protected]:3308 db_online:db_offline`
wwcxjun
   12
wwcxjun  
   2020 年 1 月 11 日
用数据迁移吧(migrate).
Felldeadbird
   13
Felldeadbird  
   2020 年 1 月 11 日
我是将每次 更新的 SQL 记录在一个 版本号的 sql。传上线时执行。这样就可以确保不会遗忘了。
tagtag
   14
tagtag  
   2020 年 1 月 11 日
一直想用数据库的版本管理工具比如 flyway,但是大家都嫌麻烦。
Ravenddd
   15
Ravenddd  
   2020 年 1 月 11 日 via Android
navicat,数据库结构同步,数据同步很好用
efaun
   16
efaun  
   2020 年 1 月 12 日
navicat +1
© 2026 V2EX · 58ms · 3.9.8.5