【flyway】DBマイグレーションツール「flyway」を使ってMySQLにDBマイグレートする

今回はDBマイグレーションツールの「flyway」を使用して、MySQLへDBマイグレートを行っていきます。

flywayはGradle等のビルドツールでプラグインも用意されていますが、今回はコマンドラインツールとして使用します。

環境

OS: Windows10

DB: MySQL 5.7

flyway: flyway-6.4.4

flywayとは

flywayはDBマイグレーションツールです。Gradle等のビルドツールのプラグインやAPI、コマンドラインツール等いくつかの形式で公開されています。

flywayを使用するとスムーズにDBマイグレートが可能なため多人数での開発で威力を発揮します。また、DBのバージョンニングも可能なため、複数バージョンが並行する開発現場等で特に重宝すると思います。

使い方

ダウンロード

以下のリンクからWindows用のZipをダウンロードし、任意のディレクトリに解凍します。

https://flywaydb.org/documentation/commandline/

設定ファイル

解凍したファイル直下にconfディレクトリが存在し、そのディレクトリにflyway.confというファイルが存在します。これがflywayを実行する際の設定ファイルです。

今回は最小構成で動かすのでファイルの中身を以下のようにします。

※対象はlocalhostのtest_databaseスキーマです。また、MySQLのユーザ名はtest、パスワードもtestにしています。

flyway.url=jdbc:mysql://localhost/test_database?serverTimezone=JST
flyway.user=test
flyway.password=test

serverTimezoneの設定も必須です。これが無いと実行時にエラーとなります。

SQLファイルを配置

次にflyway実行時に適用するSQLを配置します。デフォルトの配置箇所は解凍したファイル直下のsqlディレクトリです。

ただし、配置するSQLのファイル名には命名規則が存在します。命名規則は大文字Vから始まり、バージョンと説明となります。バージョンと説明の間のデリミターはアンダースコア2つです。また、バージョンの記載は二通りあり、例えばバージョン1.23の場合は1.23もしくは1_2_3のいずれかでも記載できます。

今回は初期テーブル作成用に「V1.00__create_init_table.sql」としました。

drop table if exists USER cascade;

create table USER (
  USER_ID INT AUTO_INCREMENT
  , USER_NAME VARCHAR(30)
  , constraint USER_PKC primary key (USER_ID)
) ;

これで準備は終わりです。

実行する

コマンドプロンプトで解凍したディレクトリ直下へ移動し、以下のコマンドを実行することでDBマイグレートできます。

flyway migrate

今回の場合ではtest_databaseにuserテーブルが作成されるはずです。

 

ついでに、以下のコマンドを実行すると現在のスキーマのバージョンやマイグレートされる内容を確認することができます。

flyway info

 

また、以下のコマンドを実行するとスキーマを空にすることもできます。

flyway clean