Open3

初めての Go 言語

Masayuki TsujiMasayuki Tsuji

Go 言語の情報をここに書き残しておく。

先駆けて実装してしまっているので、順番前後になるかも...

Masayuki TsujiMasayuki Tsuji

データベースのマイグレーション

golang-migrate を使ってマイグレーション管理をする。
データベースは PlanetScale を使っているので、ローカルから develop ブランチに反映をして main へのマージリクエストを送ることで本番環境への反映負荷を軽減。

そのため、Macbook にそのままモジュールをインストールして利用する。

brew install golang-migrate

マイグレーションファイルを生成

migrate/sql ディレクトリに生成した SQL ファイルを配置するコマンド

migrate create -ext sql -dir ./migrate/sql -seq create_xxxxxx_table

マイグレーション実行

DNS=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
migrate -database "mysql://$DSN" -path ./migrate/sql up  

ロールバック

DNS=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
migrate -database "mysql://$DSN" -path ./migrate/sql down 

マイグレーション失敗した時の再実行

migrate -database "mysql://$DSN" -path ./migrate/sql force <version>
Masayuki TsujiMasayuki Tsuji

Q: どこでマイグレーションが実行されたかどうかを管理している?

A: schema_migrations テーブル

マイグレーションファイルごとにレコードが追加される訳ではなく、適用された最後のバージョンのみを管理している模様。