golang製のDBマイグレーションツールgooseをMySQLで使ってみる

Pocket

golang製(Go言語)のDBマイグレーションツール、gooseを使ってMySQLのマイグレーションをやってみた。

インストール

https://bitbucket.org/liamstask/goose
こちらに書かれている通りにインストール。(もちろんGoは事前にインストールしておく)

helpを見てみる。

「goose is a database migration management system for Go projects.」
→「gooseはGoプロジェクト向けのデータベースマイグレーション管理システムです。」
なるほど。

DB設定

適当な場所(プロジェクトのルートディレクトリとか)にgoose用のディレクトリ”db”を作って、
DB設定ファイルのサンプルをコピーしてくる。

dbconf.yml

dbconf.yml を編集する。
とりあえずはdevelopment環境のみをこんな感じで。

mymysql のopen文字列

以下のパターンが設定可能。

  • DBNAME/USER/PASSWD
  • unix:SOCKPATH*DBNAME/USER/PASSWD
  • unix:SOCKPATH,OPTIONS*DBNAME/USER/PASSWD
  • tcp:ADDR*DBNAME/USER/PASSWD
  • tcp:ADDR,OPTIONS*DBNAME/USER/PASSWD
  • cloudsql:INSTANCE*DBNAME/USER/PASSWD

gooseがデフォルトで使えるDBDriver

今のところ(2014.06.25現在)、

  • “postgres” (github.com/lib/pq)
  • “mymysql” (github.com/ziutek/mymysql/godrv)
  • “sqlite3” (github.com/mattn/go-sqlite3)

の3つのドライバが使えるそうなので、今回はdriverに”mymysql”を指定。
一応上記以外のドライバが使える仕組みもあるらしいが、よく分からん。
(予定があるだけでまだ実装されてないのかな)

マイグレーション作成

マイグレーションスクリプトを作成する。
golangとSQLのどちらかでスクリプト作成できるが、すぐ試せそうなSQLで作ってみる。

スクリプト編集

goose Up と goose Down に対応するスクリプトをそれぞれ書きます。

`

マイグレーション適用

upコマンドで、スクリプトで定義されたマイグレーションを適用します。

適用状態の確認

statusコマンドで確認できます。

バージョン管理用テーブルを見てみる

goose_db_versionテーブルが自動的に作成されています。

バージョン確認

dbversionコマンドでバージョン確認。

マイグレーションのロールバック

必要であればdownコマンドでロールバックできます。

まとめ

さくっと使いやすかった。

ちなみに、MySQL用のdriverは最近までメンテナンスされていそうなこっちの方を使いたい。
普通にgolangでMySQL使うときはこっちにしよう。
https://github.com/go-sql-driver/mysql

One Thought on “golang製のDBマイグレーションツールgooseをMySQLで使ってみる

  1. Pingback: 【Go】DBマイグレーションツールGooseをちょっと試す | Yohei Blog

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation