提供されるスクリプト

最終更新日: 2023年2月27日

check_db

ビルドしたアプリケーションであるwagbyapp/binフォルダに用意されています。
次のコマンドを入力することで、外部データベースとの接続テストを行うことができます。

> check_db.bat
※ Linux の場合は、check_db.sh となります。

コマンドの結果は同一フォルダ内の check_db.txt に出力されます。同ファイルの内容をチェックしエラーが発生していないことを確認してください。

接続テストが成功すれば check_db.txt 内に次のようなデータベース及びJDBCドライバの情報が出力されます。

...
getDatabaseProductName=HSQL Database Engine
getDatabaseProductVersion=2.0.0
...
getDriverName=HSQL Database Engine Driver
getDriverVersion=2.0.0
...

init_db

ビルドしたアプリケーションであるwagbyapp/binフォルダに用意されています。
次のコマンドを入力することで、テーブルの作成ならびに初期データの登録を行うことができます。

> init_db.bat
※ Linux の場合は、init_db.sh となります。

コマンドが正常に実行されると、次のように表示されます。

Command: auto
All table enabled
Config File:.\conf\initdb.xml
Log4j Property File: default file.
import seq 11/11 at 0 sec. process 11 at 0 sec. ...
...(省略)
import juser 2/2 at 0 sec. process 2 at 0 sec. ...

ワンポイント

内蔵データベース利用時は、ビルド処理の一環として本スクリプトが実行されます。そのためビルドの都度、データは初期化されます。外部データベース利用時は、本処理は手動で行います。

export_db

ビルドしたアプリケーションであるwagbyapp/binフォルダに用意されています。
次のコマンドを入力することで、現在のテーブルの値をエクスポート(外部ファイルとして出力)することができます。

> export_db.bat ..\..\export\data_xxxx
※ フォルダ名は "data_" を接頭語としてください。
※ Linux の場合は、export_db.sh となります。

出力先は $(APPHOME)/export フォルダ以下になります。

重要

Windows OS 利用時、このバッチファイルを(ファイルエクスプローラから)ダブルクリックして実行することはできません。コマンドライン引数として「対象フォルダ」を指定する必要があるためです。

drop_db

ビルドしたアプリケーションであるwagbyapp/binフォルダに用意されています。
次のコマンドを入力することで、外部データベース上の(Wagbyに関する)データ及びテーブル定義を削除します。

> drop_db.bat
※ Linux の場合は、drop_db.sh となります。

import_db

$(APPHOME)/binフォルダに用意されています。
次のコマンドを入力することで、テーブルの作成ならびに、エクスポートフォルダ内のデータ一式を外部データベースに読み込むことができます。

> import_db.bat ..\..\export\data_xxxx
※ Linux の場合は、import_db.sh となります。

重要

Windows OS 利用時、このバッチファイルを(ファイルエクスプローラから)ダブルクリックして実行することはできません。コマンドライン引数として「対象フォルダ」を指定する必要があるためです。

migrate_db8.5.0

migrate_db コマンドは、スキーママイグレーション機能を提供します。

現在、稼働しているデータベースのテーブル定義(旧)と、入れ替えようとしているアプリケーション wagbyapp に含まれるテーブル定義(新)の差分をとり、差を埋めるための SQL (alter table 命令) を発行します。つまり migrate_db コマンドを使うことで、テーブル定義の変更作業を自動的に行います。

準備すること (本機能を利用するときに必要な設定)

"環境 > データベース > メイン > 環境" の "列にデフォルト値を設定する" を有効にしてください。(サブデータベースでも利用する場合、同様にサブデータベースの "列にデフォルト値を設定する" を有効にしてください。)

バージョンアップ時の注意点

R8.4.x からバージョンアップした場合、本設定を有効にしてビルドすると、既存のテーブル定義が変更されます。[詳細...]

操作方法

migrate_db は本番環境で実行します。

1. テーブル定義を作成する

wagbyapp/bin フォルダに含まれる init_db.bat を実行します。このタイミングでデータベースにテーブルが作成されます。

(すでにテーブル定義がある場合は、この手順をスキップしてください。)

2. 最初の操作

wagbyapp/bin フォルダに含まれる migrate_db.bat を実行します。次の処理が行われます。

  • 利用しているデータベースに flyway 用の管理テーブル flyway_schema_history が作成され、レコードが1件作成されます。
  • $(DEVHOME)/migratedb が作成されます。ここにはDDLの履歴ファイルが格納されます。現時点の wagbyapp のテーブル定義 (DDL) がコピーされます。

3. スキーママイグレーションを行う

リポジトリを変更し、ビルドすると新しい wagbyapp が用意されます。この wagbyapp を本番環境にコピーします。その後に再度 migrate_db.bat を実行すると、テーブル定義の差分が自動適用されます。

注意

適用したテーブル定義(スキーマの変更)を戻すことはできません。

対応するデータベース

本機能は MySQL (5.7以上) と PostgreSQL (9.4以上) で利用できます。それ以外のデータベースではご利用いただけません。

対応する Wagby のバージョン

R8.5.0 以降の Wagby で対応しています。

開発環境との関係

migrate_dbは本番環境で利用することを想定しています。

migrate_dbを開発環境で実行することはできますが、開発環境のデータベースに対するスキーママイグレーション処理となります。本番環境には影響されません。

スキーママイグレーションをやめる

flyway での履歴管理をやめる場合は次のコマンドを入力します。

> migrate_db.bat clean

これにより $(DEVHOME)/migratedb 及び flyway_schema_history テーブルが削除されます。

スキーママイグレーションの内容をリセットする

手動でテーブル定義を変更するなどの操作を行うと、スキーママイグレーションの管理情報と整合性がとれなくなり、migrate_db コマンドが失敗します。

いったんmigrate_db.bat cleanでスキーママイグレーションの管理テーブルを初期化し、その後あらためて migrate_db コマンドを実行することで、現時点の状態から、再びスキーママイグレーションを利用できるようになります。

技術仕様

必須項目の扱い

必須項目には自動的にデフォルト値がセットされます。Wagbyが生成するDDL(create table)のカラムに定義されたデフォルト値が使われます。

デフォルト値を指定しなかった場合、次のようになります。

初期値
数値(小数含む) 0
文字列 Undefined
日付 1970-1-1
時刻 0:0:0
日付時刻 1970-1-1 0:0:0
モデル参照 1

必須値のデフォルトの変更方法

  • R9系の場合、環境>データベース>メイン タブの「スキーママイグレーション > 必須項目の初期値」を設定します。
  • R8系の場合は wagbydesigner/webapps/wagbydesigner/WEB-INF/classes/gencompatibility.properties ファイルを編集してください。標準では次のようになっています。(コメントアウトされています)
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Byte=0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Short=0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Int=0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Long=0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Float=0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Double=0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.String=Undefined
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Date=1970-1-1
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Time=0:0:0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.DateTime=1970-1-1 0:0:0
    #jp.jasminesoft.jfc.gen.InitdbImportXslGenerator.defaultvalue.Zipcode=900-0000
    修正したいエントリについて、先頭のコメント (#) を除いた上で、値を指定してください。

順序の扱い

"新" の方に順序が新しく用意された場合、マイグレーションによって順序も作成されます。

その他の情報

扱うデータサイズが巨大の場合

各スクリプト実行時に "Out Of Memory" (メモリ不足) というエラーメッセージが表示されることがあります。この場合、次のように対応します。

  1. テキストエディタでスクリプトファイルを開きます。
  2. スクリプトファイル内に -Xmx という表記でメモリサイズを指定している箇所があります。
    -Xmx512m
    標準では "512m" (512メガバイト)となっています。この値を大きくし、ファイルを保存します。(例 1024m とする。)
  3. 編集後、スクリプトファイルを再度、実行します。