
GoライブラリおよびCLIで、PostgreSQL、MySQL、SQLite、Cassandraをサポートしたデータベーススキーママイグレーションを管理するためのツールです。アップ/ダウンマイグレーションのワークフローに対応しています。
Goで書かれたマイグレーションヘルパーです。既存のGolangコードで使用するか、 CLI経由でコマンドを実行できます。
GoCode import github.com/mattes/migrate/migrate
CLI go get -u github.com/mattes/migrate
特徴
^Cで実行中のマイグレーションを安全に終了。migrateパッケージの上に構築されています。別のドライバーが必要ですか? ドライバーインターフェースを実装してPRを開いてください。
# インストール
go get github.com/mattes/migrate
# パスに新しいマイグレーションファイルを作成
migrate -url driver://url -path ./migrations create migration_file_xyz
# 利用可能なすべてのマイグレーションを適用
migrate -url driver://url -path ./migrations up
# すべてのマイグレーションをロールバック
migrate -url driver://url -path ./migrations down
# 直近に適用されたマイグレーションをロールバックし、再度実行
migrate -url driver://url -path ./migrations redo
# downコマンドとupコマンドを実行
migrate -url driver://url -path ./migrations reset
# 現在のマイグレーションバージョンを表示
migrate -url driver://url -path ./migrations version
# 次のn個のマイグレーションを適用
migrate -url driver://url -path ./migrations migrate +1
migrate -url driver://url -path ./migrations migrate +2
migrate -url driver://url -path ./migrations migrate +n
# 前のn個のマイグレーションをロールバック
migrate -url driver://url -path ./migrations migrate -1
migrate -url driver://url -path ./migrations migrate -2
migrate -url driver://url -path ./migrations migrate -n
# 特定のマイグレーションに移動
migrate -url driver://url -path ./migrations goto 1
migrate -url driver://url -path ./migrations goto 10
migrate -url driver://url -path ./migrations goto v
GoDocはこちら: http://godoc.org/github.com/mattes/migrate/migrate
import "github.com/mattes/migrate/migrate"
// 必要なドライバーをインポートして登録・利用可能にする
import _ "github.com/mattes/migrate/driver/mysql"
// 同期バージョンのマイグレーション関数を使用 ...
allErrors, ok := migrate.UpSync("driver://url", "./path")
if !ok {
fmt.Println("Oh no ...")
// allErrorsスライスで何かする
}
// 非同期バージョンのマイグレーション関数を使用 ...
pipe := migrate.NewPipe()
go migrate.Up(pipe, "driver://url", "./path")
// pipeは基本的にチャネル
// 独自のチャネルリスナーを書く。例としてmain.goのwritePipe()を参照。
マイグレーションファイルの形式は次のようになります:
001_initial_plan_to_do_sth.up.sql # upマイグレーションの指示
001_initial_plan_to_do_sth.down.sql # downマイグレーションの指示
002_xxx.up.sql
002_xxx.down.sql
...
なぜ2つのファイルなのか? この方法ならpsql -f ./db/migrations/001_initial_plan_to_do_sth.up.sqlのようなことも可能で、
upマイグレーションとdownマイグレーションを分けるためのカスタムマークアップ言語は不要です。
ファイル名の拡張子はドライバーに依存することに注意してください。