[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
Refer:golang-migrate
Link:https://www.cnblogs.com/farwish/p/14220184.html
[Go] golang-migrate/migrate 快速使用指南的更多相关文章
- Rancher 快速上手指南操作(1)
Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...
- AngularJS快速入门指南20:快速参考
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...
- AngularJS快速入门指南18:Application
是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...
- AngularJS快速入门指南17:Includes
使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...
- AngularJS快速入门指南16:Bootstrap
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南15:API
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南14:数据验证
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南13:表单
一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...
- AngularJS快速入门指南12:模块
AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个a ...
随机推荐
- 工作中最常见的6种OOM问题
前言 最近我写的几篇线上问题相关的文章:<糟糕,CPU100%了><如何防止被恶意刷接口><我调用第三方接口遇到的13大坑>发表之后,在全网广受好评. 今天接着线上 ...
- drf(路由)
一 自动生成路由 基本使用 # 视图类,继承了ViewSetMixein,路由 # path('books/', views.BookViewSet.as_view(actions={'get': ' ...
- MySQL(单表查询、多表查询、Navicat软件使用、查询练习、pymysql模块)
一 单表操作 表准备和注意事项 create table employee( id int not null unique auto_increment, name varchar(20) not n ...
- 您真的了解Java中的锁吗?这7种不同维度下的锁知道吗?
写在开头 在上几篇博文中,我们聊到过volatile关键字,用它修饰变量可以保证可见性与有序性,但它并不是锁,在使用时并不会阻塞线程,且不保证原子性,属于一种轻量级.高效的同步方式,因此,如果我们的使 ...
- TP6框架--EasyAdmin学习笔记:实现数据库增删查改
这是我写的学习EasyAdmin的第三章,这一章我给大家分享下如何进行数据库的增删查改 上一章链接:点击这里前往 上一章我们说到,我仿照官方案例,定义了一条路由goodsone和创建了对应数据库,我们 ...
- [Git]关联远程库的两种方法及配置
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18000705 出自[进步*于辰的博客] 参考笔记三,P ...
- C# OpenCvSharp 提取文字区域
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- C# OpenCv 证件照换底色
using OpenCvSharp; using System; using System.Collections.Generic; using System.Linq; using System.T ...
- Games101:作业6
说明 本次作业主要实现对上一次作业代码的重构以及使用BVH加速求交的交点判断和递归调用 代码框架的修改 有影响的改动就是框架中定义了两个结构体一个是光线ray,一个是交点Intersection 交点 ...
- IntelliJ IDEA 设置类和方法注释
一.在创建类和文件的时候加注释 1.创建类 在右侧输入: 1 /** 2 * 3 * @author ${USER} 4 * @date ${YEAR}-${MONTH}-${DAY} ${TIME} ...