見出し画像

golang go-migrateの使い方と注意点

今回はgo-migrateについて解説していきます。

go-migrate

go-migrateはGo言語で書かれたデータベースのマイグレーションツールです。
このツールを使うとSQLやGoのスクリプトを用いてデータベーススキーマの変更を管理し、データベースのバージョン管理を行うことができます。


go-migrateのインストール

go-migrateはCLIツールとして利用できます。

macOSでのインストール


brew install golang-migrate

Goを使ってインストール

go get -u -d github.com/golang-migrate/migrate/cmd/migrate


go-migrateの使い方

マイグレーションファイルの作成

マイグレーションはバージョン番号をファイル名に含む2つのSQLファイルで構成されことが一般的です。
一つはアップマイグレーション、もう一つはダウンマイグレーションです。

1_create_users_table.up.sql
1_create_users_table.down.sql


マイグレーションの実行

データベースにマイグレーションを適用するには以下のようにmigrateコマンドを使用します。

migrate -path db/migrations -database "postgres://localhost:5432/mydb?sslmode=disable" up

-pathオプションでマイグレーションファイルのディレクトリを指定し、-databaseでデータベースの接続情報を設定します。
up は最新のマイグレーションを適用します。


golangの案件を探すならクラウドワークス テック

・97%がリモートのお仕事
・週4日、週3日OKのお仕事多数
・登録社数74万件業界トップクラス
・2〜4週間程度でお仕事決定
・案件提案から契約締結、勤怠管理もすべてオンライン完結
・継続率90%!一人ひとりをサポート
・参画後の評価で委託料が上がる認定パートナー制度
・簡単60秒で登録


go-migrateの注意点

マイグレーションファイルの不変性

マイグレーションが一度適用されると、そのマイグレーションファイルは変更すべきではありません。
既に適用されたマイグレーションファイルを変更すると、整合性の問題が発生する可能性があるため、新しい変更が必要な場合は新しいマイグレーションファイルを作成する必要があります。


ダウンマイグレーションの準備

すべてのアップマイグレーションに対して問題が発生した場合に変更をロールバックできるようにダウンマイグレーションを用意しておくと安心です。


バージョン管理の整合性

チームで開発を行う場合はマイグレーションのバージョン管理に注意が必要です。
チームメンバーが同時に異なるマイグレーションを作成している場合、マイグレーションの適用順序を正しく管理することが重要です。


golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。
この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


いいなと思ったら応援しよう!

この記事が参加している募集