goose
Goose 项目核心内容总结:
Goose 是一个用于数据库迁移的工具,支持通过 SQL 或 Go 语言编写迁移脚本,可管理数据库结构的版本变更。其主要功能包括:
- 迁移管理:支持创建、应用、回滚迁移,兼容 SQL 和 Go 两种脚本形式。SQL 迁移需包含
-- +goose Up和-- +goose Down注释区分正向和回滚操作;Go 迁移需通过init()注册迁移函数。 - 环境变量替换:在 SQL 迁移中通过
-- +goose ENVSUB ON注释启用环境变量替换(如${VAR}),提升配置灵活性。 - 混合版本机制:开发阶段使用时间戳命名迁移文件,部署时通过
fix命令转换为顺序编号,避免版本冲突。 - 嵌入式迁移:支持将 SQL 迁移文件嵌入 Go 二进制中(需使用
embed包),适用于生产环境的静态迁移管理。 - 事务控制:默认在事务中执行迁移,但可通过
-- +goose NO TRANSACTION注释跳过事务。
使用方法:
- 命令行模式:通过
goose命令执行迁移(如goose up应用所有未执行的迁移)。 - Go 库集成:通过
goose.Up()等函数在代码中调用迁移,需配置数据库连接和迁移目录。
主要特性:
- 支持多数据库方言(如 PostgreSQL、MySQL)。
- 提供
fix命令自动修正迁移顺序,适配生产环境。 - 兼容 Go 1.16+ 的
embed功能,实现迁移文件的嵌入式管理。