在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. CLI 用途的安装 [文档] [确保] CLI 工具使用 go 命令安装时,不应该在 go.mod 所在的目录中执行命令,也就是先进入到其它非项目目录内。
$ go get -tags 'postgre' github.com/golang-migrate/migrate/v4/cmd/migrate postgre 可以替换为适用你当前数据库的名称,共有这些支持的 database,未来构建的约束会被移除 [issue]. $ migrate --help $ migrate -source file://path/to/migrations -database postgre://localhost:5432/database_name up 2 # 指定文件和数据库连接 $ migrate -database "$MY_MIGRATE_DATABASE" # 或者 从环境变量指定数据库连接的方式,其它方式参见文档
2. 另一种是 非 CLI ,在 go 项目中使用的方式 当前主要版本是 github.com/golang-migrate/migrate/v4
3. 快速开始 创建迁移:migrate create -ext sql -dir db/migrations -seq create_users_table 运行迁移:migrate -database YOUR_DATABASE_URL -path PATH_TO_YOUR_MIGRATIONS up 强制指定版本:migrate -path PATH_TO_YOUR_MIGRATIONS -database YOUR_DATABASE_URL force VERSION (example)
另外不同的数据库所使用的 DSN 会不一样, 使用不正确的有时候你会得到 error: default addr for network '127.0.0.1:3306' unknown
4. 实践 # 查看包创建的表 schema_migrations 里存的 version 值,比如:2(dirty) migrate -path db/migrations -database "mysql://user:pass@(127.0.0.1:3306)/mydb?multiStatements=true" version
# 如果 migrate 遇到 error,那么 schema_migrations 表里当前 version 对应的 dirty 字段会标记为 1 # 将指定 version 的 dirty 更新为 0,使用如下命令,force 后面跟的是 version 值: migrate -path db/migrations -database "mysql://user:pass@(127.0.0.1:3306)/mydb?multiStatements=true" force 2
Refer:golang-migrate Link:https://www.cnblogs.com/farwish/p/14220184.html |
请发表评论