Open3
初めての Go 言語
Go 言語の情報をここに書き残しておく。
先駆けて実装してしまっているので、順番前後になるかも...
データベースのマイグレーション
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>
Q: どこでマイグレーションが実行されたかどうかを管理している?
A: schema_migrations テーブル
マイグレーションファイルごとにレコードが追加される訳ではなく、適用された最後のバージョンのみを管理している模様。