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. MySQL(单表查询、多表查询、Navicat软件使用、查询练习、pymysql模块)

    一 单表操作 表准备和注意事项 create table employee( id int not null unique auto_increment, name varchar(20) not n ...

  2. WPF 图片锯齿解决办法(保证解决!!!)

    无非几个属性统统加上,不能解决我倒立洗头,日五档电风扇 RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRoundin ...

  3. modelsim常用操作之波形仿真

    modelsim波形仿真的新手问题 1.实验目的 在刚接触modelsim时,被其繁复的操作流程所困,一度只能依靠在quartus中修改代码编译后再重启modelsim,自动导入才能得到波形.这样的操 ...

  4. docker安装es-header及相关问题解决

    安装es-header docker pull mobz/elasticsearch-head:5 docker run --restart=always --name elasticsearch-h ...

  5. KingbaseES V8R6集群运维案例---数据块故障自动修复(auto_bmr)

    案例说明: 在Oracle11.2版本之后,DataGuard 若搭建实时应用日志的物理备库,那么在主库数据文件少 量坏块的情况下,可以利用ABCR技术快速修复坏块. Starting in Orac ...

  6. archlinux运行appimage

    1.cd进入appimage所在的目录 cd your_folder 2.赋予appimage运行权限 chmod +x your_file.appimage 3.运行appimage格式文件 ./y ...

  7. #KM算法#UVA1411 Ants

    题目 在一个平面直角坐标系中,有 \(n\) 个黑点,\(n\) 个白点. 给出一种二分图匹配的方案,使得没有两条由黑白点连接的线段相交 分析 如果线段都不相交,根据三角形的两边之和大于第三边,那么线 ...

  8. #状压dp#C 计划带师

    分析 状压dp显然,主要是字典序的问题, 考虑初态终态转换就可以保证字典序最小了 代码 #include <cstdio> #include <cctype> #include ...

  9. SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

    SQL SELECT INTO 语句 SELECT INTO 语句将数据从一个表复制到一个新表中. SELECT INTO 语法 将所有列复制到新表中: SELECT * INTO newtable ...

  10. 攻防世界 debug

    题目 分析过程 丢到PE里面 一开始,我看到下面的脱壳提示,以为是我没见过的壳,下载了相关工具脱壳--发现脱了后又出现没见过的脱壳提示,根据提示脱壳弄出来的东西怪怪的 卡题,查了资料 学到一个新知识点 ...