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

[Go] golang-migrate/migrate 快速使用指南的更多相关文章

  1. Rancher 快速上手指南操作(1)

    Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...

  2. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  3. AngularJS快速入门指南19:示例代码

    本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...

  4. AngularJS快速入门指南18:Application

    是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...

  5. AngularJS快速入门指南17:Includes

    使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...

  6. AngularJS快速入门指南16:Bootstrap

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  8. AngularJS快速入门指南14:数据验证

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  9. AngularJS快速入门指南13:表单

    一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...

  10. AngularJS快速入门指南12:模块

    AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个a ...

随机推荐

  1. 3DCAT荣获2021金陀螺“年度XR行业技术创新奖”“年度优秀VR行业应用奖”两项大奖

    作为年度行业影响力大奖,第六届金陀螺颁奖典礼与2021未来商业生态链接大会(简称"FBEC2021")同期举办.金陀螺奖金陀螺奖旨在对优质作品/项目及优秀企业做出嘉奖,鼓励创业者. ...

  2. linux磁盘管理、网络

    一 磁盘管理 1 查看磁盘空间的占用 df -h 显示人类易读的方式 linux下磁盘命名格式 /dev/sd[a-z] 2 查看目录的占用空间 du -s 查看目录 -h 显示人类易读的方式 du ...

  3. Clang RecursiveASTVisitor & ASTFrontendActions based on it

    RecursiveASTVisitor Basics 类声明 template<typename Derived> class clang::RecursiveASTVisitor< ...

  4. Apache Hudi从零到一:存储格式初探

    在花了大约 4 年时间致力于 Apache Hudi(其中包括 3 年Committer身份)之后,我决定开始这个博客系列,旨在以有组织且适合初学者的方式展示 Hudi 的设计和用法. 我的目标是确保 ...

  5. [Java]Socket套接字(网络编程入门)

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/129907893 出自[进步* ...

  6. PostgreSQL与Java JDBC数据类型对照 源码

    文件:postgresql-42.2.12.jar 类名:org.postgresql.jdbc.TypeInfoCache // basic pg types info: // 0 - type n ...

  7. ArrayList扩容代码分析

    ArrayList扩容机制是在面试中频繁出现的问题,平时了解的比较含糊,特此记录! 注意:每次发生扩容,其容量扩充为原来的1.5倍左右 add方法 public boolean add(E e) { ...

  8. 算法学习笔记【5】| ST表

    ST表 Part 1:ST表解决的问题是什么 ST 表可以用来解决RMQ(区间最值问题)等可重复贡献的问题. ST表基于倍增的思想来实现. Part 2:ST表的实现 ST表通过 O(nlog⁡n)& ...

  9. Scala选择分支if else

    1 package com.atguigu.chapter03 2 3 import scala.io.StdIn 4 5 /** 6 * Scala 中 if else 表达式其实是有返回值的,具体 ...

  10. 【已解决】xml映射找不到类名java.lang.ClassNotFoundException

    XMLUtil文件里的Class.forName 参数要写相对于项目根目录的绝对路径,除了类名要加上对应的包路径!