使用Migrate库的实战示例 安装Migrate工具 bash go install -tags 'mysql' github.com/golang-migrate/migrate/v4/cmd/migrate package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" "github.com/golang-migrate /migrate/v4" "github.com/golang-migrate/migrate/v4/database/mysql" _ "github.com/golang-migrate
经过调研,最终选择了Github 10k star 的golang-migrate。 使用 准备SQL脚本 将初始化脚本、升级脚本放在项目里的init/postgres/sql目录下。 写代码 package postgres import ( "context" "embed" "strings" "time" "github.com/golang-migrate /migrate/v4" _ "github.com/golang-migrate/migrate/v4/database/postgres" "github.com/golang-migrate password=xxx dbname=xx sslmode=disable TimeZone=Asia/Shanghai" 数据竞争问题:最开始我通过数据库唯一索引去实现一个分布式锁,写完后调试代码时发现,golang-migrate
八、Migrate (golang-migrate/migrate) 用 Go 编写的数据库迁移工具。作为 CLI[3] 使用或作为库[4]导入。 #171) Google Cloud Spanner CockroachDB ClickHouse Firebird MS SQL Server 安装: $ go get -u -d github.com/golang-migrate mysql://user:pass@tcp(localhost:3600)/user" -path=database/migrations down 项目地址:< https://github.com/golang-migrate https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md [3]CLI: https://github.com/golang-migrate /migrate#cli-usage [4]库: https://github.com/golang-migrate/migrate#use-in-your-go-project
golang-migrate/migratehttps://github.com/golang-migrate/migrate Stars: 14.2k License: NOASSERTION migrate
安装 golang-migrate 可以到 migrate 的官网下载对应平台的二进制文件: https://github.com/golang-migrate/migrate/releases 然后将压缩包中的 golang-migrate 工具会在数据库中创建一个 schema_migrations 表来跟踪已应用的迁移。 通过使用 golang-migrate,您可以更方便地管理和应用数据库迁移,特别是在团队协作的环境中。 总结 通过 migrate 可以让数据库可以像代码一样进行版本控制。
file://path/to/migrations -database postgres://localhost:5432/database up 2 地址:https://github.com/golang-migrate