Golang Go语言中,大家偏向如何管理数据库迁移?

发布于 1周前 作者 itying888 来自 Go语言

Golang Go语言中,大家偏向如何管理数据库迁移?

请教:

大家偏向怎么管理 Go 项目的 Migrations 的?

用 Gorm 的 Auto migration 吗?(对我来说,像一个黑箱)

自己写 sql 执行并记录?诸如 https://github.com/golang-migrate/migratehttps://github.com/rubenv/sql-migrate


更多关于Golang Go语言中,大家偏向如何管理数据库迁移?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

18 回复

migrate+1 自己写并记录版本号

更多关于Golang Go语言中,大家偏向如何管理数据库迁移?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


dba 迁移数据, 你们是业务人操作的??? 惊艳

先了解一下什么是 project Migrations

这语气说得,你公司市值到 1000 亿没有?
大公司加减字段都是提单 dba 操作的,业务没有 dml 权限的,业务操作数据库迟早倒闭

flyway 可以吧

自己写 migrate 用的 sql,发布时写 release note 提交表单,交由 Moving Team 和 DBA 去做 审核 + moving

#4 啧啧啧,一副没见过市面的样子

小项目在代码里面 migrate 。大项目用 sql 脚本,提交到 sql 管理平台,由 dba 审核升级

#7 感谢,粗略了解过这个工具,感觉接近 Auto Migration 了。

#2 不同公司有不同的操作咯。而且专业人员负责,也要写 sql 嘛

migrate 用 SQL 管理啊…

自己写 sql…

小项目直接在 idea 里面改数据库,然后从数据库重新生成 model…

感谢楼主, 已 B 某傻 x, 没想到风气这么差, 仿佛就他见过世面.可能市值 1000yi 的公司开发测试的时候都是请 dba 来手把手喂饭.

简单用过几个框架:
1. beego:使用 bee migrate
2. gorm:使用 gormigrate

其他没有 orm 的项目,之前是手撸了个框架,通过命令自动在一个包里面给一个类型生成两个方法:

- func (m *Migration) MigrateXXXXX(db DB) error
- func (m *Migration) RollbackXXXXX(db DB) error

其中 XXXXX 是一个自增的 ID,函数内容自己写,然后运行的时候通过反射取出 Migration 的方法进行排序,然后对比数据库记录往后进行。
后来发现这种方法可以用 golang-migrate 来替代。

可以看一下 bytebase.com

支持基于 GitOps 的 DDL 管理, 相当于带了界面的 golang-migrate,用 Golang+Vue 写的,也开源 https://github.com/bytebase/bytebase

在Golang中管理数据库迁移,有几种常见且高效的方法:

  1. 使用GORM库:GORM是一个简洁高效的ORM库,支持多种数据库。它提供了AutoMigrate函数,可以自动处理数据库迁移。开发者只需定义好数据模型,GORM就能根据模型自动创建或更新数据库表结构。
  2. 利用第三方迁移工具:如Flyway和Liquibase,这些工具支持多种数据库类型,并提供了丰富的迁移管理功能。开发者可以通过这些工具创建迁移脚本,并指定迁移顺序,然后运行迁移命令来更新数据库结构。
  3. 框架内置迁移功能:一些Golang框架(如ent)提供了内置的迁移工具,允许开发者在框架内直接编写和执行迁移脚本。这种方法通常与框架的ORM功能紧密集成,提供了更便捷的开发体验。
  4. 手动编写迁移脚本:虽然这种方法较为原始,但在某些情况下仍然有效。开发者可以手动编写SQL脚本来修改数据库结构,并在需要时手动运行这些脚本。然而,这种方法需要更多的手动操作,且容易出错。

综上所述,推荐优先使用GORM库或第三方迁移工具来管理Golang中的数据库迁移,这些方法提供了更高的自动化程度和更好的错误处理能力。同时,也应根据项目的具体需求和团队的技术栈来选择合适的迁移方案。

回到顶部