公式リポジトリ
対応DB
MySQL / SQLite / PostgreSQL / MSSQL / Oracle Database
使い方
1. インストール
$ go get github.com/rubenv/sql-migrate/...
2. 設定ファイルのdbconfig.ymlを作成する
development:
dialect: mysql //使用するRDBMS
datasource:[ユーザー名]:[パスワード]@/[データベース名]?parseTime=true
dir: db/migrations //マイグレーションファイルを作成するディレクトリ
table: migrations //マイグレーション履歴を保存するテーブル名
マイグレーションファイルをどのディレクトに生成するかdir:
で設定できます。
上記の場合、db/migrations
ディレクトリに生成されます。
3. マイグレーションファイルの作成
sql-migrate new [テーブル名]
20191223120951-[テーブル名]
というファイルが作成されます。
4. マイグレーションファイルに記述する
-- +migrate Up
以下に行いたいスキーマの変更のためのSQLを記述し、
-- +migrate Down
以下にそれを打ち消すSQLを記述します。
20191223120951-users.sql
-- +migrate Up
CREATE TABLE IF NOT EXISTS `users` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
);
-- +migrate Down
DROP TABLE IF EXISTS `users`;
5. コマンド
マイグレーションファイルを実行する
$ sql-migrate up
Applied 1 migrations
ロールバックする
$ sql-migrate down
Applied 1 migrations
マイグレーションの実行を確認する
$ sql-migrate status
+--------------------------------------+-------------------------------+
| MIGRATION | APPLIED |
+--------------------------------------+-------------------------------+
| 20191223120951-users.sql | 2019-12-23 08:00:00 +0000 UTC |
+--------------------------------------+-------------------------------+
直前の操作を再実行する
$ sql-migrate redo
マイグレーションファイルを作成する
$ sql-migrate new [テーブル名]
参考
https://github.com/rubenv/sql-migrate
https://medium.com/what-i-talk-about-when-i-talk-about-technology/a-db-migration-tool-for-go-rubenv-sql-migrate-718872ab9528