LoginSignup
3
1

More than 3 years have passed since last update.

golang-migrateにてDBのマイグレーションを管理する

Posted at

golang-migrateを使用したマイグレーションに関して学んだのでメモ

サンプルファイルはこちら

CLI Install

ここを参考にした

 brew install golang-migrate

確認

$ migrate
Usage: migrate OPTIONS COMMAND [arg...]
       migrate [ -version | -help ]

〜略〜

マイグレーションファイルを配置

1_create_table_sample.up.sql
CREATE TABLE IF NOT EXISTS
    sample_db.sample(
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL,
        created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        deleted_at DATETIME DEFAULT NULL,
        PRIMARY KEY(id)
    )ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
1_create_table_sample.down.sql
DROP TABLE IF EXISTS
    sample_db.sample;

マイグレーションを実行してみる

プロジェクトのルートにいることを想定

migrate -source file://db/migrate -database 'mysql://root:root@tcp(127.0.0.1:13306)/sample_db' up

結果

1/u create_table_sample (1.090510742s)

エラーが出なかったらOK
これでマイグレーションファイルに記述した sample テーブルが作成された!

3
1
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
3
1