zoukankan      html  css  js  c++  java
  • [Go] golang-migrate/migrate 快速使用指南

    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

    Link:https://www.cnblogs.com/farwish/p/14220184.html

  • 相关阅读:
    2017ICPC沈阳赛现场赛 L-Tree (dfs)
    2019西北工业大学程序设计创新实践基地春季选拔赛 D(卢卡斯定理)
    Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)
    模板
    洛谷
    模板
    洛谷
    洛谷
    模板
    模板
  • 原文地址:https://www.cnblogs.com/farwish/p/14220184.html
Copyright © 2011-2022 走看看