8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初学者向け】Flywayについてまとめた

Posted at

導入方法

以下の記事が参考になります!

Flywayとは

公式ドキュメント: Flyway Documentation

Flywayは、データベースのバージョン管理ツールです。
Flywayを使用すると、データベースのスキーマやデータの変更を簡単に管理でき、異なる環境での一貫性を保つことができます。Flywayは、SQLスクリプトを使用してマイグレーションを行い、データベースの状態を追跡します。

データベースのバージョン管理ツールとは

データベースのバージョン管理ツールは、簡単に言うと 「データベースの変更履歴を管理してくれるツール」 のことです。

例えば、あなたがアプリケーションを開発していて、最初はユーザー情報を保存するテーブルが「名前」と「メールアドレス」だけだったとします。でも、後から「電話番号」も保存したくなったとします。

このとき、データベースに新しく「電話番号」のカラムを追加する必要があります。でも、もしチームで開発していたら

  • 開発環境のデータベース
  • テスト環境のデータベース
  • 本番環境のデータベース
  • 他の開発者のローカルデータベース

これら全部に同じ変更を適用する必要があります。手動でやると、 「あれ、どこまで変更したっけ?」 「このテーブル、前回の変更が適用されてるかな?」 みたいに混乱しがちです。

そこで登場するのがFlywayのようなバージョン管理ツールです!

これがあると

  1. 変更をファイルで管理: データベースの変更をSQLファイルとして保存
  2. 順番を管理: どの変更をどの順番で適用するかを自動で管理
  3. 重複適用を防止: 同じ変更を2回適用してエラーになることを防ぐ
  4. 環境間の同期: すべての環境で同じ状態にできる

つまり、Gitでソースコードのバージョンを管理するように、データベースの構造や内容の変更もバージョン管理できるようになるんです!

Flywayの基本的な使い方

基本的な流れは以下の通りです

1. マイグレーションファイルを作成する

まず、データベースに対する変更をSQLファイルで作成します。ファイル名には特別なルールがあります。

V1__Create_user_table.sql
V2__Add_phone_number_to_user.sql
V3__Create_product_table.sql

ポイント

  • Vで始まる
  • バージョン番号(V1、V2、V3...)
  • アンダースコア2つ(__
  • わかりやすい説明

例:V1__Create_user_table.sql

CREATE TABLE users (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. Flywayを実行する

作成したマイグレーションファイルをFlywayで実行します

flyway migrate

これだけでFlywayが自動的に

  • まだ実行されていないマイグレーションを見つけて
  • 順番通りに実行してくれます

3. 新しい変更を追加する

後から「電話番号」カラムを追加したくなったら、新しいマイグレーションファイルを作ります。

例:V2__Add_phone_number_to_user.sql

ALTER TABLE users ADD COLUMN phone VARCHAR(20);

また flyway migrate を実行すれば、V2の変更だけが適用されます。

4. 現在の状態を確認する

「今どの状態なの?」と確認したいときは

flyway info

これで、どのマイグレーションが実行済みで、どれが未実行かがわかります。

よくある疑問

Q: 間違えて作ったマイグレーションファイルはどうするの?

A: まだ実行していなければファイルを修正すればOK。実行済みの場合は新しいマイグレーションファイルで修正します。

Q: チームメンバーと同期するには?

A: マイグレーションファイルをGitで管理して、みんなが flyway migrate を実行すれば同じ状態になります!

Q: 本番環境にも同じように適用できるの?

A: はい!同じマイグレーションファイルを使って flyway migrate するだけです。

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?