LoginSignup
16
10

More than 3 years have passed since last update.

[Go]マイグレーションツールsql-migrate使い方

Last updated at Posted at 2019-12-23

公式リポジトリ

対応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

16
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
10