IntelliJ IDEA 2026.2 Help

Flyway

Flyway は、データベースの変更にバージョン管理、追跡、適用できるデータベースマイグレーション ツールです。 IntelliJ IDEA は次の Flyway サポートを提供します:

IntelliJ IDEA 2024.1 より前のバージョンでは、一部の Flyway 機能は JPA Buddy プラグイン でのみ利用可能でした。 次のビデオでは、これらの機能を Flyway プラグインで利用できることを紹介しています。

既存のプロジェクトに Flyway を追加する。

  1. ビルドファイルをエディターで開きます(プロジェクトで使用するビルドツールによって pom.xml または build.gradle )。

  2. Flyway の依存関係を追加し、バージョンがプロジェクト全体と一致していることを確認してください:

    <dependencies> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>12.0.3</version> </dependency> </dependencies>
    dependencies { implementation 'org.flywaydb:flyway-core:12.0.3' }
    dependencies { implementation("org.flywaydb:flyway-core:12.0.3") }
  3. (任意)Maven や Gradle を使って Flyway コマンドを実行したい場合は、次のプラグインを追加してください。

    <plugins> <plugin> <groupId>org.flywaydb</groupId> <artifactId>flyway-maven-plugin</artifactId> <version>12.0.3</version> <configuration> <url>${YOUR_DATABASE_URL}</url> <user>${YOUR_DATABASE_USERNAME}</user> <password>${YOUR_DATABASE_PASSWORD}</password> </configuration> </plugin> </plugins>
    plugins { id 'org.flywaydb.flyway' version '12.0.3' } flyway { url = '<YOUR DATABASE URL>' user = '<YOUR DATABASE USERNAME>' password = '<YOUR DATABASE PASSWORD>' }
    plugins { id ("org.flywaydb.flyway") version "12.0.3" } flyway { url = "<YOUR DATABASE URL>" user = "<YOUR DATABASE USERNAME>" password = "<YOUR DATABASE PASSWORD>" }

    Flyway プラグインの設定一覧については、 Flyway 構成リファレンスを参照してください。

  4. Ctrl+Shift+O を押して変更をインポートします。

ビルドツールの使用に関する詳細は、 Maven または Gradle を参照してください。

Flyway マイグレーション

Flyway マイグレーションは、データベーススキーマまたはデータの変更を定義します。 これらは通常 SQL ファイルですが、Flyway は Java ベースやスクリプトによるマイグレーションもサポートしています。 IntelliJ IDEA には、次の種類の Flyway マイグレーションを生成するための組み込みアクションがあります:

  • 初期マイグレーション :選択したデータモデル(データベースや永続性ユニット)を現在の形で取り込みます。 その結果は、空のデータベースでそのデータモデルを再作成するために使用できる DDL スクリプトになります。

  • diff マイグレーション :2 つのデータモデルの差分を取り込みます。たとえば、現在のデータベーススキーマとコードのエンティティマッピングとの差分です。 その結果は、ターゲットモデルに対して実行することでソースと一致させる DDL スクリプトになります。

  • Java マイグレーション :Flyway の BaseJavaMigration クラス を継承した Java クラスを作成し、 migrate() メソッドのスタブを含みます。 他のマイグレーションタイプとは異なり、Java マイグレーションを生成する際に IntelliJ IDEA はデータモデルやスキーマの変更を取得しません。

初期マイグレーションを生成する

  1. 永続化ツールウィンドウを開きます。

  2. ツールウィンドウで、永続性ユニットまたはエンティティを右クリックし、 新規 | Flyway Init マイグレーション… を選択します。

  3. 表示される Flyway 初期スキーママイグレーション ダイアログで、マイグレーションの元となるデータモデルを選択します。

    init-schema-changelog

    選択内容に基づき、IntelliJ IDEA が永続性ユニットまたはデータベース接続を自動入力します。必要に応じて変更も可能です。

  4. OK をクリックします。

  5. 表示された Flyway Migration プレビューダイアログでマイグレーションを設定し、 保存する をクリックします。

diff マイグレーションを生成する

  1. Persistence ツールウィンドウを開き、永続化ユニットまたはエンティティを右クリックして、 新規 | Flyway マイグレーション… を選択します。

    • または、 データベース ツールウィンドウを開き、データベースまたはテーブルを右クリックして Flyway マイグレーションの作成… を選択します。

  2. 開いた Flyway 差分マイグレーション ダイアログで、比較するデータモデルを選択します。

    移行スクリプトウィンドウ

    DBモデル を選択した場合、IntelliJ IDEA がデータベース接続や永続性ユニットを自動入力します。必要に応じて変更できます。

  3. OK をクリックします。

  4. 表示された Flyway Migration プレビューダイアログでマイグレーションを設定し、 保存する をクリックします。

SQL マイグレーションファイルはテーブルお名前のクイックナビゲーションをサポートしています。 テーブルのエンティティクラス、最初にテーブルを導入したマイグレーション、または(データベース ツールウィンドウでデータベースが接続されていれば)データベース内のテーブルの DDL 定義へジャンプできます。

マイグレーションファイルでクイックナビゲーションを使用するには、テーブル名にキャレットを置き、 Ctrl+B を押して、 宣言を選択 リストから移動先を選択してください。 CREATE TABLE ステートメントでクイックナビゲーションを実行することはできませんのでご注意ください。

テーブル宣言のオプションに移動

Flyway マイグレーションプレビュー ダイアログ

Flyway マイグレーションのプレビュー ダイアログでは、生成された DDL ステートメントの確認、マイグレーションへのグループ化、保存方法の設定ができます。

flyway-preview

ダイアログ左側には、生成されたスキーマ変更のツリーが表示されます。 各変更には、 危険度別の色分けや関連する型を示すアイコンが付けられます。 特定の変更を選択すると、IntelliJ IDEA がダイアログ右側にその DDL ステートメントを表示します。

ツリー上部のアイコンで、生成された変更やマイグレーションの管理が可能です。

マイグレーションの追加

マイグレーションの追加

追加のマイグレーションを作成します。

マイグレーションから除去

マイグレーションから除去

選択した変更をマイグレーションから削除し、必要に応じて 無視 セクションに移動して、将来のマイグレーションに含めないようにします。

無視対象から復元

選択した変更を 無視 セクションから、任意のマイグレーションに移動します。

別のマイグレーションに移動

選択した変更を別のマイグレーションに移動します。

このオプションを選択した時に他にマイグレーションがなければ、IntelliJ IDEA が自動的に 1 件作成します。

他のアクションを表示

複数の変更を同時に操作できます: すべて選択 (特定の危険レベルのもの)、 すべて展開 、または すべて折りたたむ

ダイアログ右側には、現在選択中の変更に対応する生成済み DDL ステートメントが表示されます。 マイグレーション(個別の変更ではなく)を選択すると、このセクションで保存方法の指定もできます。

項目

説明

名前を付けて保存

マイグレーションを SQL ファイルとして保存する、 スクラッチファイルとして保存する、クリップボードにコピーする、または クエリコンソールで開くかを選択できます。

ディレクトリ

IntelliJ IDEA に SQL ファイルを保存する場所を指定してください。

ファイル名

ファイル名を設定してください。

IntelliJ IDEA は、 Flyway プラグイン設定 に基づいてプレフィックスとバージョンを自動入力します。

Java ベースのマイグレーション

Java ベースのマイグレーションは、SQL で表現が難しい変更について SQL マイグレーションの代替手段として利用できます。 Flyway の JavaMigration インターフェース(通常は BaseJavaMigration クラスの継承)を実装し、Flyway の 命名規則に従う Java クラスです。

Java マイグレーションを生成する

  1. Ctrl+Shift+A を押し、 Flyway Java マイグレーション と入力して、 Enter を押します。

  2. 開いた Flyway Java マイグレーション ダイアログでファイル名を設定します。 IntelliJ IDEA は、 Flyway プラグイン設定 に基づいてプレフィックスとバージョンを自動入力します。

    flyway-java-migration

    必要に応じて、マイグレーションを作成するソースルートやパッケージを変更してください。

  3. OK をクリックします。

IntelliJ IDEA は、生成された Java マイグレーションクラスをエディターで開きます。

package org.example.demoflyway; import org.flywaydb.core.api.migration.BaseJavaMigration; import org.flywaydb.core.api.migration.Context; import java.sql.PreparedStatement; public class V1__CreateTables extends BaseJavaMigration { @Override public void migrate(Context context) throws Exception { try (PreparedStatement statement = context.getConnection() .prepareStatement("")) { statement.execute(); } } }

Flyway コールバック

マイグレーションプロセスを実行すると、Flyway が保留中のマイグレーションを順に実行し、すべてのマイグレーションが適用されるとプロセスを終了します。 この流れは一般的なシナリオに適していますが、より複雑なプロジェクトでは各マイグレーションごとやマイグレーションライフサイクルの特定のタイミングで追加のロジック実行が求められる場合があります。 Flyway はこのような要件に コールバックで対応しています。

IntelliJ IDEA には、次の種類の Flyway コールバックを生成するための組み込みアクションがあります:

空の SQL コールバックを作成する

  1. Ctrl+Shift+A を押し、 Flyway SQL コールバック と入力して、 Enter を押します。

  2. Flyway SQL コールバック 」ダイアログが開きます。 IntelliJ IDEA は、コールバックが作成されるソースルートとディレクトリを自動入力しますが、必要に応じて変更できます。

    Flyway SQL コールバック
  3. コールバックイベント フィールドの横にある 横向きのドットが三つあるボタン をクリックします。 これにより コールバックイベントの選択 ダイアログが開き、マイグレーションライフサイクルのどのタイミングでコールバックを実行するかを選択できます。

    コールバックイベント

    各コールバックイベントの横にあるアイコンは、それが Flyway Community Edition(CE(変更セット) )で利用可能か、エンタープライズ Edition(TE(テスト環境) )が必要かを示します。

  4. (オプション)コールバックの説明を含めてください。 この値はファイルお名前に追加されます。

  5. OK をクリックします。

IDE はコールバックファイルをエディターで開きます。 選択したコールバックイベントで実行される SQL ステートメントを追加できます。

Java コールバックを生成する

  1. Ctrl+Shift+A を押し、 Flyway Java コールバック と入力して、 Enter を押します。

  2. Flyway Java コールバック 」ダイアログが開きます。 このオプションでコールバッククラスお名前、場所、 インターフェースメソッドの初期実装を決定します。

    Flyway Java コールバック

    コールバックオプションを構成します:

    項目

    説明

    名前

    クラスお名前を指定してください。

    コールバック名

    コールバックお名前を指定してください。 これは getCallbackName() メソッドの戻り値になります。

    コールバックイベント

    マイグレーションライフサイクルのどのタイミングで Flyway がこのクラスの handle() メソッドを呼び出すか指定してください。 IntelliJ IDEA は自動的にそれらを supports() メソッドに追加します。

    イベントお名前を手動で入力するか、 横向きのドットが三つあるボタン をクリックして コールバックイベントの選択 ダイアログから選択できます。

    トランザクション内で処理できます

    canHandleInTransaction() メソッドが true を返すようにしたい場合は、このオプションを選択してください。

    ソースルート

    コールバックを作成するソースルートを選択してください。

    パッケージ

    コールバックを作成するパッケージを選択してください。

  3. OK をクリックします。

IntelliJ IDEA は、生成された Java コールバッククラスをエディターで開きます。

package db.callback; import org.flywaydb.core.api.callback.Callback; import org.flywaydb.core.api.callback.Context; import org.flywaydb.core.api.callback.Event; public class FlywayCallback implements Callback { @Override public boolean supports(Event event, Context context) { return event.equals(Event.BEFORE_MIGRATE); } @Override public boolean canHandleInTransaction(Event event, Context context) { return true; } @Override public void handle(Event event, Context context) { //TODO handle logic... } public String getCallbackName() { return "Flyway"; } }

マイグレーションをデプロイする

マイグレーションとコールバックの準備ができたら、専用の Flyway 実行構成 を使ってマイグレーションプロセスを開始し、データベースをコードと同期できます。 この実行構成は、 実行ウィジェットや選択したツールウィンドウから起動できます。

実行ウィジェットからマイグレーションプロセスを実行する

  • すでに Flyway 実行構成がウィジェットで選択されている場合は、 実行 をクリックします。

    • または、 Shift+F10 を押します。

  • ウィジェットで他の構成が選択されている場合は、そのお名前をクリックする 表示されたポップアップで、Flyway 実行構成を見つけて、その横の 実行 をクリックします。

    • または、 Alt+Shift+F10 を押します。 表示されたポップアップで、Flyway 実行構成を選択します。

IntelliJ IDEA は Flyway 実行構成を 実行ツールウィンドウ で起動します。

ツールウィンドウからマイグレーションプロセスを実行する

Flyway 実行構成は次のツールウィンドウから起動できます:

  • 永続化ツールウィンドウ:

    • 永続性ユニットまたはエンティティを右クリックし、 Flyway Migrate の実行… を選択します。

  • データベースツールウィンドウ:

    • ツールバーに移動して Flyway Migrate の実行… を選択する

    • データベース、スキーマ、またはテーブルを右クリックし、 Flyway Migrate の実行… を選択します。

  • Spring プロジェクトのみ プロジェクトツールウィンドウ:

    • SQL マイグレーションファイルのあるディレクトリを右クリックし、 実行 | Flyway を選択します。

IntelliJ IDEA は Flyway 実行構成を 実行ツールウィンドウ で起動します。

Flyway 実行構成

Flyway 実行構成を使って、アプリケーションを起動したりターミナルを利用せず、接続されたデータベースに向けて SQL マイグレーションファイルやコールバックを実行できます。 内部的には、この構成で Flyway migrate コマンドが実行されます。

Flyway 実行構成を作成する

  1. 実行 / デバッグ構成 ダイアログを開きます:

    • メインツールバーで 実行ウィジェットをクリックし、 構成の編集… を選択します。

    • あるいは、 実行 | 構成の編集… に進みます。

  2. ダイアログの左側で 新しい構成の追加 | Flyway を選択します。

  3. 実行構成オプションを設定する

Flyway 実行構成オプション

実行構成オプション

項目

説明

名前

実行構成の名前を指定して、編集または実行時に他の構成の間ですばやく識別できるようにします。

プロジェクトファイルとして保存

他のチームメンバーと共有できるファイルに実行構成設定を保存します。 デフォルトの場所は .idea/runConfigurations です。 ただし、 .idea ディレクトリを共有したくない場合は、プロジェクト内の他のディレクトリに構成を保存できます。

デフォルトでは、このオプションは無効になっており、IntelliJ IDEA は実行構成設定を .idea/workspace.xml に保存します。

必須オプション

項目

説明

ディレクトリ

SQL マイグレーションのあるディレクトリへのパスを指定します。

DB 接続

マイグレーション実行時に Flyway がターゲットとするデータベースを指定する

既存の データソースデータベース ツールウィンドウから選択するか、 をクリックして新規作成してください。

追加オプション

これらのオプションを実行構成に追加するには、ダイアログ右側の オプションを変更 を選択してください。

項目

説明

マイグレーション時にベースライン化

スキーマ履歴テーブルが存在しない非空のデータベーススキーマでマイグレーションを実行しようとした場合の Flyway の動作を決定します:

  • このオプションを選択すると、Flyway は履歴テーブルを作成し、既存のスキーマをベースラインとしてマークし、バージョン2以上のマイグレーションのみを実行します。

  • このオプションをオフにすると、Flyway はエラーを投げ、マイグレーションを実行しません。

この設定の詳細は Flyway 公式ドキュメントで詳しく見る

スキーマ

マイグレーション実行時に Flyway がターゲットとするデータベーススキーマを指定する

複数指定する場合は、値をコンマで区切る

この設定の詳細は Flyway 公式ドキュメントで詳しく見る

Flyway プラグイン設定

IntelliJ IDEA の Flyway プラグイン設定では、マイグレーション生成時に IDE が使う命名パターンを設定できます。

Flyway プラグイン設定にアクセスするには、 設定Ctrl+Alt+S )を開き、 ツール | データベースのバージョニング | Flyway に移動します。

設定ダイアログ内の Flyway 設定

次の設定を構成できます:

項目

説明

マイグレーションの接頭辞

マイグレーションファイルお名前生成時に IDE が使用するプレフィックスを指定してください。

バージョンのパターン

ファイルバージョン設定時に IDE が使用するパターンを指定してください。 次のマクロを含めることができます:

  • #increment(<start>, <step>, <decimalFormat>) :数値シーケンスを使ってバージョンを生成します。

    • start :最初のマイグレーションのバージョン番号

    • step :各バージョン番号を増やす値

    • decimalFormat :バージョン番号のフォーマットに使用される DecimalFormat パターン

  • #date(<simpleDateFormat>) :現在のシステム日付を使ってバージョンを生成します。

    • simpleDateFormat :日付のフォーマットに使用される SimpleDateFormat パターン

  • ${semVer.<getterMethod>} :プロジェクトのビルドファイルの セマンティックバージョンを使ってバージョンを生成します。

    • getterMethod :セマンティックバージョンの特定セグメントを抽出するメソッドです。 1.2.3-SNAPSHOT+build4 バージョンの例はこちら:

      • ${semVer.getRawVersion()} :1.2.3-SNAPSHOT+build4

      • ${semVer.getMajor()}: 1

      • ${semVer.getMinor()}: 2

      • ${semVer.getPatch()}: 3

      • ${semVer.getPreRelease()}: SNAPSHOT

マイグレーションの区切り文字

ファイルバージョンと説明の区切り文字を指定してください。

マイグレーションの説明

区切り文字の後に各ファイルお名前へ追加される説明を指定してください。

依存関係なしで Flyway を使用する

ビルドファイルに依存関係を追加せずに IntelliJ IDEA で Flyway の機能を使いたい場合は、このオプションを選択してください。

Spring プロジェクト向け追加機能

IntelliJ IDEA によって提供される標準的な Flyway サポートに加え、 Spring フレームワークに基づくプロジェクトは追加の IDE 機能を活用できます。

マイグレーションのステータス

通常、どのマイグレーションがすでに実行されたかとその結果を確認したい場合、Flyway の info コマンドを実行するか、データベース内の スキーマ履歴テーブルを確認する必要があります。 IntelliJ IDEA は SQL マイグレーションのステータスを IDE 上に直接表示することで、より迅速な代替策を提供します。

マイグレーションファイル全体のステータスは、 プロジェクト ツールウィンドウ(Alt+1 )に表示されます。

プロジェクトツールウィンドウの Flyway アイコン:適用済みマイグレーションにはチェックマーク、失敗したマイグレーションには感嘆符が表示される

各マイグレーションは Flyway ロゴ(Flyway ロゴアイコン )で示され、そのステータスはロゴ右下の小さなアイコンで判別できる:

アイコン

状況

緑色のチェックマークアイコン

マイグレーションはデータベースに正常に適用されました。

赤い感嘆符アイコン

マイグレーションは実行されましたが、その SQL ステートメントのいずれかが失敗しました。

失敗したマイグレーションが赤い下線で強調表示されている場合は、ファイルお名前にマウスを合わせることでエラーの詳細を確認できる

エディターのガターで SQL ステートメント横に表示される赤い感嘆符

どの SQL ステートメントがエラー原因かを確認するには、エディターで下線付きのマイグレーションを開き、ガターの赤い感嘆符を探してください。

エディターのガターで SQL ステートメント横に表示される赤い感嘆符

(None)

マイグレーションはまだ実行されていません。

トラブルシューティング

マイグレーションはステータスアイコンなしで表示されます

この機能は Spring プロジェクトでのみ利用できます。 プロジェクトで Spring を使っている場合は、次の点を確認してください:

  • プロジェクトのビルドファイルに Flyway 依存関係を追加しました。

  • 該当するデータベースに接続し、その接続が データベース ツールウィンドウで有効になっています。

  • 構成ファイル( application.properties または application.yml )が以下の条件を満たしている:

    • spring.flyway.locations がマイグレーションファイルのディレクトリを指しています。

    • spring.flyway.url または spring.datasource.url がデータベース接続に使用した URL と一致しています。

  • すでに Flyway の migrate コマンドを実行しており、その結果が スキーマ履歴テーブルに記録されています。

2026 年 7 月 14 日