バージョン管理されたSQLファイルやGo関数でデータベースのスキーマ変更を管理するCLI兼Goライブラリ。
golang-migrate/migrate
複数のデータベースに対して順序付きのスキーマ変更を適用できる、CLIとライブラリを備えたGo製のマイグレーションツール。
- スター
- 18,983
- フォーク
- 1,618
- 未解決の Issue
- 492
- 最終コミット
- 先月
これは何?
migrateは、ローカルファイルシステム、S3、GitHubなどのソースからバージョン管理されたマイグレーションファイルを読み込み、順番に対象のデータベースへ適用します。各マイグレーションはupとdownのファイルで構成されているため、変更を適用したり、元に戻したりできます。実行処理はデータベースドライバーが担い、順序管理と状態管理のロジックはコアに集約されています。
PostgreSQL、MySQL、MariaDB、SQLite、MongoDB、Cassandra、Neo4j、Google Cloud Spanner、CockroachDB、ClickHouse、SQL Serverなど、幅広いデータベースに対応しています。マイグレーションのソースには、ファイルシステムのパス、io/fs、埋め込みバイナリデータ、GitHub、GitLab、Bitbucket、AWS S3、Google Cloud Storageを利用できます。
単独のコマンドラインツールとして実行するほか、公式Dockerイメージを使ったり、Goライブラリとしてインポートしたりできます。ライブラリでは独自のデータベースクライアントとロガーを渡せるほか、マイグレーションの一部だけが適用される事態を避けるための、グレースフルな停止にも対応しています。
主な機能
- 01upとdownのマイグレーションファイルを、バージョン順に適用します。
- 02PostgreSQL、MySQL、SQLite、MongoDB、Spannerなど、多数のデータベースに対応しています。
- 03ファイルシステム、埋め込みデータ、Gitホスティングサービス、クラウドストレージからマイグレーションを読み込みます。
- 04CLI、Dockerイメージ、Goライブラリを提供します。
- 05ライブラリとして使う場合、既存のデータベースクライアントとカスタムロガーを指定できます。
ユースケース
- PostgreSQLまたはMySQLを利用するGoサービスのスキーマ変更をバージョン管理する。
- CI/CDやコンテナのデプロイパイプラインのステップとしてマイグレーションを実行する。
- マイグレーションをGoバイナリに埋め込み、アプリケーションと一緒に配布する。
- 1つのツールで複数のデータベースエンジンにまたがるスキーマ変更を管理する。
クイックスタート
- 1
スタートガイドを読み、記載されている手順に従ってCLIをインストールしてください
- 2
migration directoryのプレースホルダーを置き換えて、Dockerでマイグレーションを実行してください
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
使う前に知っておきたいこと
- プロジェクトのメタデータではライセンスが明確に特定できないため、使用する前にリポジトリのライセンス条件を確認してください。
トピック
よくある質問
- migrate とは?
- 複数のデータベースに対して順序付きのスキーマ変更を適用できる、CLIとライブラリを備えたGo製のマイグレーションツール。 migrateは、ローカルファイルシステム、S3、GitHubなどのソースからバージョン管理されたマイグレーションファイルを読み込み、順番に対象のデータベースへ適用します。各マイグレーションはupとdownのファイルで構成されているため、変更を適用したり、元に戻したりできます。実行処理はデータベースドライバーが担い、順序管理と状態管理のロジックはコアに集約されています。
- migrate は無料で使えますか?ライセンスは?
- migrate は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- migrate は今もメンテナンスされていますか?
- 半年以内に更新あり。migrate の最終コミットは 2026年9月9日 です。
- migrate は何に使えますか?
- PostgreSQLまたはMySQLを利用するGoサービスのスキーマ変更をバージョン管理する。 CI/CDやコンテナのデプロイパイプラインのステップとしてマイグレーションを実行する。 マイグレーションをGoバイナリに埋め込み、アプリケーションと一緒に配布する。 1つのツールで複数のデータベースエンジンにまたがるスキーマ変更を管理する。
- migrate のインストール方法は?
- スタートガイドを読み、記載されている手順に従ってCLIをインストールしてください migration directoryのプレースホルダーを置き換えて、Dockerでマイグレーションを実行してください: docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
- migrate はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/golang-migrate/migrate
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
チームや環境をまたいでSQLデータベースのマイグレーションを管理する、軽量でフレームワークに依存しないCLIツール。
JDBCおよびODBCドライバー経由で100種類以上のデータベースに接続できる、無料のマルチプラットフォーム対応デスクトップSQLクライアント兼データベースツール。
40以上のデータベースに対応し、デスクトップ・Web・Docker・CLIで使える、無料のローカルファーストなAI支援データベースクライアント兼SQLワークスペース。
SQLクエリを読み取り、型安全なGo、Kotlin、Python、TypeScriptのコードを生成するSQLコンパイラです。
SQLデータベースのテーブル、カラム、クエリ結果を補完する、型安全なTypeScript用SQLクエリビルダー。