好好学习,天天向上,一流范文网欢迎您!
当前位置: >> 总结 >> 学习总结 内容页

spanner Goose:一款成熟灵活的数据库变更管理工具

数据库结构通常都会随着业务不断演进,例如新增字段、修改索引、重构表结构等。如果没有一个像代码一样的版本控制,很容易导致不同环境数据库结构不一致,发布程序时忘记执行某些 SQL,升级表结构之后回滚困难等问题。

Goose 是一个免费开源的数据库变更(迁移)管理工具spanner,能够通过增量 SQL 语句或者 Go 函数将数据库变更变成可管理、可追踪、可回滚的版本。

Goose 采用 Go 语言开发,遵循 MIT 开源协议,代码托管在 GitHub:

spanner_Goose数据库迁移管理工具_Go语言开发数据库版本控制

https://github.com/pressly/goose

功能特性下载安装

Goose 支持多种安装方式spanner起步网校,使用 Go 安装的命令如下:

go install github.com/pressly/goose/v3/cmd/goose@latest

spanner_Go语言开发数据库版本控制_Goose数据库迁移管理工具

也可以通过以下网址下载二进制安装文件:

https://github.com/pressly/goose/releases

使用示例

Go语言开发数据库版本控制_spanner_Goose数据库迁移管理工具

输入 goose help 查看帮助信息:

Usage: goose DRIVER DBSTRING [OPTIONS] COMMAND
or
Set environment key
GOOSE_DRIVER=DRIVER
GOOSE_DBSTRING=DBSTRING
GOOSE_MIGRATION_DIR=MIGRATION_DIR
Usage: goose [OPTIONS] COMMAND
Drivers:
    postgres
    mysql
    sqlite3
    spanner
    mssql
    redshift
    tidb
    clickhouse
    ydb
    starrocks
    turso
...

创建一个新的 SQL 迁移脚本:

goose create add_some_column sql
2026/04/12 21:24:50 Created new file: 20260412132450_add_some_column.sql

编辑 SQL 文件,定义升级或者回滚操作。

然后,执行迁移脚本:

-- 执行所有迁移脚本
goose up
-- 迁移到指定版本
goose up-to 20260412132450
-- 迁移单个脚本
goose up-by-one

也可以执行回滚脚本:

- 回滚单个脚本
goose down
-- 回滚到指定版本
goose down-to 
-- 回滚所有脚本
goose down-to 0

其他操作,建议参考文档:

https://pressly.github.io/goose/documentation/annotations/