中国军情
droptable(这才叫靠谱的数据库迁移工具 —— 我推荐你用它)

如果你做过后端开发、做过数据迁移、做过 CI/CD,你一定遇到过一个问题:

每次改数据库结构都像挖地雷。

字段加了,结构变了,生产库挂了;
回滚?你连版本都对不上。

今天给大家推荐一个我真正在用、稳定靠谱、用 SQL 就能搞定版本迁移的开源工具:Goose(pressly/goose)

截图引用Github项目

什么是 Goose?

Goose 是一个 数据库迁移工具,支持:

通过 SQL 文件写迁移
也能用 Go 代码写函数迁移
自动管理版本、回滚、状态检查
既能当 CLI 用,也能当库嵌入程序里用

一句话总结:

Goose 让你数据库 schema 的变更可控、可回滚、可自动化。

为什么我觉着它特别好用?

1) 你不需要学新语法,迁移就是写 SQL

不像一些工具要你写 DSL 或复杂配置,Goose 就是标准 SQL + 注释:

-- +goose UpCREATE TABLE users (...);-- +goose DownDROP TABLE users;

写完就能迁移、回滚、状态查看。简单直接。

2) CLI + 库,开发/生产全覆盖

你可以:

✔ 在本地用 goose up 一键应用所有迁移
✔ 在 CI/CD 里自动运行
✔ 还可以把它嵌入服务里程序化运行迁移逻辑

也就是说:迁移既是脚本,又是代码库的一部分

3) 支持多种数据库

无论你用的是:

  • PostgreSQL
  • MySQL
  • SQLite
  • MSSQL
  • ClickHouse
  • Spanner
  • Vertica 等

Goose 都能跑起来。

4) 跟版本控制天然结合

Goose 的迁移文件有时间戳版本号,谁写的迁移一目了然。
CI 上跑 migrations 也能做到可追踪、可审计

最常用的命令是啥?

这几个你每天都用得上:

goose create <name> sql — 生成新的迁移
goose up — 执行所有未执行的迁移
goose down — 回滚上一次迁移
goose status — 看迁移状态
goose fix — 把版本变成顺序号 (CI 很有用)

谁最适合用 Goose?

✔ Go 后端项目
✔ 微服务里自动化迁移
✔ 想把 Schema 变更纳入 CI/CD
✔ 想 SQL 化、简单可控的迁移方案

如果你现在还在手写 SQL、手动执行 ALTER、怕生产库崩,那 Goose 就是你要的“安全带”。

使用体验总结

Goose 把数据库 schema 变更从苦差事变成可自动、可审计、可回滚的工程化流程。

项目地址:(直接点开就用)https://github.com/pressly/goose


顶一下()     踩一下()

热门推荐

发表评论
0评