molderでテーブルを作成し、更新する

molder

はじめに

テキストファイル(YAML)でデータベースのテーブル構造を管理できるmolderの基本的な使い方を紹介します

molder
概要molderはデータベースのテーブル構造をYAMLで管理するツールですテキストファイルでデータベースの管理が可能になるため、GITなどでテーブル構造の差分管理が可能になりますオープンソースで開発しており、ソースはGitHubに...

準備

今回はDockerでMySQLを用意します
下記のようなDocker-compose.ymlを使用し、データベースを作成します

version: "2"
services:
  mysql:
    image: mysql
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: 1
      MYSQL_DATABASE: molder
      MYSQL_USER: molder
      MYSQL_PASSWORD: molder
    ports:
      - "3306:3306"

オプションで接続情報を指定するのは手間なので下記のようなservers.ymlを作成します

mysql:
  type: mysql
  host: 127.0.0.1
  user: molder
  password: molder
  database: molder

YAMLからテーブルを作成する

下記のようなtables.ymlを作成します

tables:
  users:
    columns:
      id:
        id: true
      name:
        type: varchar
        length: 100
        notNull: true
      created:
        type: timestamp
        notNull: true

molderでcreateを実行します

./molder create --hosts servers.yml --input tables.yml

何もテーブルが存在しないデータベースmolderにusersテーブルが作成されます

YAMLを更新し、テーブル構造を更新する

下記のようにtables.ymlを更新します

tables:
  users:
    columns:
      id:
        id: true
      name:
        type: varchar
        length: 100
        notNull: true
      # addressを追加
      address:
        type: varchar
        length: 500
      created:
        type: timestamp
        notNull: true

molderでupdateします

./molder update --hosts servers.yml --input tables.yml

addressが追加されます

実際に実行されるクエリを確認する

updateする際--queryオプションを指定するとクエリが実行されず、画面上に表示されます

./molder update --hosts servers.yml --input tables.yml --query


実際にテーブル構造を更新する前にクエリを確認することができます
今回の場合は下記のようなクエリが表示されます

/* molder */
ALTER TABLE `users` ADD COLUMN `address` varchar(500) NULL ;

更新できるかチェックする

updateする際--dry-runオプションを指定すると、クエリは実行されますがロールバックされます

./molder update --hosts servers.yml --input tables.yml --dry-run

エラーなくクエリが実行できるか現在のテーブル構造を変更することなく確認できます

おわりに

molderを使用すれば、新規作成したデータベースにテーブルを作成するとが簡単にできます
システムの開発途中でテーブルが追加されたり、カラムの定義が変更されたりした場合には、簡単にテーブル構造を変更することができます

タイトルとURLをコピーしました