这个项目能做什么

migrate 是一个用 Go 编写的数据库迁移工具,既可作为命令行接口使用,也可作为库导入到 Go 项目中。该项目由 mattes/migrate 分叉而来。 工作原理:migrate 从配置的来源读取迁移文件,并按正确顺序应用到目标数据库。设计上保持数据库驱动轻量且"简单"——核心逻辑由 migrate 协调和验证,驱动不会猜测或纠正用户输入,有疑问时直接失败。 支持的数据库包括:PostgreSQL、PGX v4 和 v5、Redshift、Ql、Cassandra/ScyllaDB、SQLite、SQLite3、SQLCipher、MySQL/MariaDB、Neo4j、MongoDB、CrateDB、Shell、Google Cloud Spanner、CockroachDB、YugabyteDB、ClickHouse、Firebird、MS SQL Server 和 rqlite。连接字符串采用 URL 格式,如 dbdriver://username:password@host:port/dbname?param1=true,保留的 URL 字符需要进行百分号编码。 迁移来源包括:本地文件系统、Go io/fs、Go-Bindata、pkger、GitHub、GitHub Enterprise、Bitbucket、GitLab、AWS S3 和 Google Cloud Storage。 CLI 是对库的薄封装,可优雅处理 Ctrl+C(SIGINT),并刻意避免配置文件搜索路径、配置文件或魔法环境变量注入。基本用法示例:migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2。项目还发布了 Docker 镜像(migrate/migrate)。 作为 Go 库,API 在 v3 和 v4 版本中描述为稳定且冻结,使用 Go modules,通过 GracefulStop 通道支持优雅停止以避免数据库损坏,允许使用自定义日志,内部使用 io.Reader 流以降低内存开销,并号称线程安全且无 goroutine 泄漏。可独立使用或通过 WithInstance 与现有数据库客户端配合使用。 迁移文件成对出现,包括 up 和 down 迁移,例如 1481574547_create_users_table.up.sql 和 .down.sql。项目提供了入门指南、CockroachDB 和 PostgreSQL 教程、编写迁移的最佳实践文档以及常见问题解答。v3 版本已不再支持;v4 和 master 是当前支持的版本线。