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. HeaderedContentControl实现左右对称

    在我们使用TextBlock却想给前面添加固定字段的时候,发现TextBlock没有Header属性, 这个时候我们可以用到HeaderedContentControl 然而,默认情况下Headere ...

  2. Vue中的$nextTick有什么作用?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.NextTick是什么 官方对其的定义 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 D ...

  3. 快速上手系列:webservice

    不同公司的系统交互,用webservice可以起到安全的作用. Webservice使用方法如下:   客户端: 这个是要打成jar包,给别人的用的,里面只是接口,没有实现.   用Webservic ...

  4. MappedByteBuffer VS FileChannel:从内核层面对比两者的性能差异

    本文基于 Linux 内核 5.4 版本进行讨论 自上篇文章<从 Linux 内核角度探秘 JDK MappedByteBuffer> 发布之后,很多读者朋友私信我说,文章的信息量太大了, ...

  5. KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误

    案例说明: 在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示: 适用版本: KingbaseES V8R6 ...

  6. KingabseES 构造常量数据表的方式 union, values, array

    背景 通用报表系统中,如果过滤条件是多选数据项,需要动态构造虚拟数据表,这里也会成为查询性能的痛点. 构造方式与执行计划 构造1000行数据的虚拟表. SQL UNION 组合多个查询的结果,需要解析 ...

  7. 修改debian apt搜索的软件包颜色(原本是绿色)

    sudo nano /etc/apt/apt.conf 加入以下内容 apt::color::highlight "#"; 再搜索软件包会变成白色 不足之处是包的前面会加上#号

  8. 【直播回顾】OpenHarmony知识赋能六期第五课—WiFi子系统

    8月11日晚上19点,知识赋能第六期第五节直播 <OpenHarmony知识赋能-WiFi子系统> ,在OpenHarmony开发者成长计划社群内成功举行. 第六期直播由从事底层基础工作1 ...

  9. Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET Core 版本

    前言: 最近的 Taurus.MVC 版本,对性能这一块有了不少优化,因此准备进行一下压测,来测试并记录一下 Taurus.MVC 框架的性能,以便后续持续优化改进. 今天先压测 .NET Core  ...

  10. 当使用git出现提示untracked files时怎么办?

    当使用 git 出现提示 untracked files 时怎么办? 背景介绍: 在使用 git 工具时,遇到如下错误. 报错内容: $ git status On branch master No ...