| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
Mar7720
8年前发布

Migrate - 数据库迁移处理助手

Migrate - 是一个采用Go开发的数据库迁移处理助手。可以在现有的代码中使用或通过CLI以命令的方式运行。
GoCode   import github.com/mattes/migrate/migrate  CLI      go get -u github.com/mattes/migrate

特性

  • Super easy to implementDriver interface.
  • Gracefully quit running migrations on ^C .
  • No magic search paths routines, no hard-coded config files.
  • CLI is build on top of the migrate package .

可用的驱动 

Need another driver? Just implement theDriver interface and open a PR.

在终端中使用 

# install  go get github.com/mattes/migrate    # create new migration file in path  migrate -url driver://url -path ./migrations create migration_file_xyz    # apply all available migrations  migrate -url driver://url -path ./migrations up    # roll back all migrations  migrate -url driver://url -path ./migrations down    # roll back the most recently applied migration, then run it again.  migrate -url driver://url -path ./migrations redo    # run down and then up command  migrate -url driver://url -path ./migrations reset    # show the current migration version  migrate -url driver://url -path ./migrations version    # apply the next n migrations  migrate -url driver://url -path ./migrations migrate +1  migrate -url driver://url -path ./migrations migrate +2  migrate -url driver://url -path ./migrations migrate +n    # roll back the previous n migrations  migrate -url driver://url -path ./migrations migrate -1  migrate -url driver://url -path ./migrations migrate -2  migrate -url driver://url -path ./migrations migrate -n    # go to specific migration  migrate -url driver://url -path ./migrations goto 1  migrate -url driver://url -path ./migrations goto 10  migrate -url driver://url -path ./migrations goto v

Usage in Go

See GoDoc here: http://godoc.org/github.com/mattes/migrate/migrate

import "github.com/mattes/migrate/migrate"    // Import any required drivers so that they are registered and available  import _ "github.com/mattes/migrate/driver/mysql"    // use synchronous versions of migration functions ...  allErrors, ok := migrate.UpSync("driver://url", "./path")  if !ok {    fmt.Println("Oh no ...")    // do sth with allErrors slice  }    // use the asynchronous version of migration functions ...  pipe := migrate.NewPipe()  go migrate.Up(pipe, "driver://url", "./path")  // pipe is basically just a channel  // write your own channel listener. see writePipe() in main.go as an example.

Migration files

The format of migration files looks like this:

001_initial_plan_to_do_sth.up.sql     # up migration instructions  001_initial_plan_to_do_sth.down.sql   # down migration instructions  002_xxx.up.sql  002_xxx.down.sql  ...

Why two files? This way you could still do sth like psql -f ./db/migrations/001_initial_plan_to_do_sth.up.sql and there is no need for any custom markup language to divide up and down migrations. Please note that the filename extension depends on the driver.

可选项目

官方网站:http://www.open-open.com/lib/view/home/1453336642980

 本文由用户 Mar7720 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1453336642980.html
数据库 Go语言 数据库管理工具