博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go - goose 数据库迁移工具
阅读量:4049 次
发布时间:2019-05-25

本文共 785 字,大约阅读时间需要 2 分钟。

1. what

开发过程中,数据库 DML 管理是一个头大的问题;

开发人员自己修改了库表结构都不知道,甚至导致一些线上问题。
测试与线上数据结构不一致,等等一系列问题。

2. why

为什么会出现这样的问题?数据库操作管理不规范。

小项目组一般没有专人管理数据,所以经常会出现这种情况。

3. how

如何规避这种问题人为问题?

统一管理DML语句。

Goose 工具就是为了解决这些问题而生的

如何使用

github : 
环境要求: go

安装

go get -u github.com/pressly/goose/cmd/goose

创建脚本

# goose create [文件名] [文件后缀]goose create alarm_db_init sql

编辑脚本过程发现的问题: 每个脚本都需要用一下格式包住。

-- +goose StatementBeginselect 1-- +goose StatementEnd

脚本文件内加入执行的内容回滚内容

查看数据库情况(需要在脚本目录)

goose mysql "username:password@tcp(ip:port)/database?parseTime=true" status

 

 

执行脚本

goose mysql "username:password@tcp(ip:port)/database?parseTime=true" up

 

回滚一个版本

goose mysql "username:password@tcp(ip:port)/database?parseTime=true" down

 

回滚到指定版本

goose mysql "username:password@tcp(ip:port)/database?parseTime=true" down-to [time_perfix]

 

 

 

 

 

转载地址:http://elnci.baihongyu.com/

你可能感兴趣的文章
浅拷贝与深拷贝
查看>>
JavaScript addEventListener()事件监听-事件流执行顺序
查看>>
export default 和 export 区别
查看>>
exports、module.exports 到底是咋回事
查看>>
环境分支-git版本管理
查看>>
uni-app 全局变量
查看>>
instanceof 的原理是什么
查看>>
js判断空对象的几种方法
查看>>
var/let/const区别
查看>>
函数式柯里化的理解?
查看>>
时间戳转化为年月日时分秒
查看>>
配置ssh公钥
查看>>
git clone拉代码的时候出现permission denied 没有权限的问题解决
查看>>
前端-vue-文件上传(图片、word,ppt,pdf,excel,txt等文件流)
查看>>
word,PDF,excel、ppt等文件上传,视频上传查看等
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs_framework springcloud使用统一的控制器来接收rpc调用请求教程,无需每个rpc接口都写控制器
查看>>