Forguncy Builder(開発環境)のデータベースの変更をForguncy Server(運用環境)のデータベースへマージしてアプリケーションを発行する手順を示します。高度な設定(サーバー管理ポータル)に記載されている方法を使用して、外部データベースを開発環境用と運用環境用に分けている場合にも、本手順によりデータベース変更のマージが可能です。
Forguncy Builderでデータベース、およびアプリケーションを修正して保存します。
最終的にアプリのオフライン配置ツールを使用して発行を行う場合には、パッケージファイルとして保存します。詳細についてはオフラインでのアプリの配置を参照してください。
アプリケーションの発行に外部データベースを開発環境用と運用環境用に分けている場合、開発環境用の外部データベースを修正、変更します。
アプリケーションをメンテナンスモードに設定、もしくは停止します。
アプリの開始と停止の「メンテナンスモードに設定」に記載されている方法にしたがって、対象のアプリケーションをメンテナンスモードに設定します。対象のForguncy Serverに対してForguncy Builderからアクセスできない環境の場合には、「アプリの停止」に記載されている方法にしたがって、対象のアプリケーションを停止させます。
メンテナンスモードに設定することで、運用中のアプリケーションはユーザーから使用できなくなります。これにより、アプリケーションの改修作業中に運用中のデータベースが更新されてしまい、再発行時にデータの不整合が生じるといったことを防ぐことができます(データベースが外部データベースを使用しており、Forguncyアプリケーション以外からもデータの更新が行われる場合を除く)。
修正したアプリケーションをデータベースをマージして発行します。
オンラインで更新する場合(Forguncy Builderからの発行)
アプリケーションの発行に記載されている方法にしたがって、[サーバーへ発行]ダイアログを開きます。
[サーバー上にあるデータベースを変更する]チェックオプションをチェックし、[構造変更の反映]を選択して、テーブル構造のマッピング設定を行います。テーブル構造のマッピング設定の詳細については、本ページの「テーブル構造のマッピング設定」を参照してください。
オフラインで更新する場合(アプリのオフライン配置ツールからの配置)
注意:アプリのオフライン配置ツールはWindows版のForguncy Serverでのみ利用が可能です。Linux版のForguncy Serverでは使用できません。
オフラインでアプリを配置するに記載されている方法にしたがって、アプリのオフライン配置ツールを開きます。
[サーバー上にあるデータベースを変更する]チェックオプションをチェックし、[構造変更の反映]を選択して、テーブル構造のマッピング設定を行います。テーブル構造のマッピング設定の詳細については、本ページの「テーブル構造のマッピング設定」を参照してください。
ページ表示権限とセルのアクセス制御の設定の上書き
本手順は必要に応じて実施してください。[ページ表示権限とセルのアクセス制御の設定を上書きする]チェックオプションをチェックすることで、Forguncy Builder側のページ表示権限の設定とセルのアクセス制御の設定でForguncy Server上のアプリケーションの設定を上書きできます。なお、Forguncy Server側の最新の設定は、[サーバーデータの取得]→[リソースに対するアクセス権限の取得]から、Forguncy Builder側へとインポートすることができます。
[発行]ボタンをクリックするとアプリケーションがForguncy Serverへと発行され、データベースの変更がマージされます。
もし、同名のアプリケーションがForguncy Server上に存在した場合、次のようなダイアログメッセージが表示されます。なお、アプリのオフライン配置ツールの場合には、同名のアプリケーションが存在しても本ダイアログは表示されません。
アプリケーションのメンテナンスモードを解除、もしくは開始します。
アプリの開始と停止の「メンテナンスモードの解除」に記載されている方法にしたがって、対象のアプリケーションのメンテナンスモードを解除します。メンテナンスモードへの設定ではなく、アプリを停止させていていた場合には、「アプリの開始」に記載されている方法にしたがって、対象のアプリケーションを開始させます。メンテナンスモードが解除されると、ユーザーがアクセスできるようになります。
必要に応じてクライアント側のWebブラウザーのキャッシュを削除します。
サーバー上のアプリケーションを再発行しても、クライアントのWebブラウザにキャッシュが残っており修正前のアプリケーションの画面が表示されることがあります。この場合、クライアント側のキャッシュを削除してください。
開発環境上のデータベースと運用環境上のデータベースを比較し、テーブルなどの構造の差異をどのようにマッピングするかを設定することで、開発環境のテーブル構造の変更を運用環境へとマッピングできます。このマージ処理は、テーブルや列の追加や削除といった変更のみをマージするため、運用環境で蓄積されているデータは基本的に保持されます。
データベースのマージ処理の途中でエラーが発生した場合、そのエラー発生前までに実行されたマージ処理は反映され、ロールバックされることはありません。そのため、マージ処理行う際にはバックアップを作成しておくことを強くお勧めします。なお、本マージ処理実行時に自動的にバックアップを作成する機能が用意されています。詳細については全般設定(サーバー管理ポータル)の「アプリケーション発行時の自動バックアップ」を参照してください。
「構造変化の反映」を選択するか、「テーブル構造のマッピング設定」ボタンをクリックすると[テーブル構造のマッピング設定]ダイアログが表示されます。なお、内部データベースのビューは項目としては表示されませんが、変更されているビューは自動的に反映されます。
内部データベース | 外部データベース | |
---|---|---|
テーブル | マージ対象(マッピング設定に表示される) | マージ対象(マッピング設定に表示される) |
ビュー | マージ対象(マッピング設定に表示される) | マージ対象(マッピング設定に表示される) |
ストアドプロシージャー | 該当なし | マージ対象(マッピング設定に表示される) |
テーブル、およびビューの場合、対象となるのはForguncy Builderの[ナビゲーションウィンドウ]に表示されているオブジェクトです。数式フィールドと集計フィールドはマッピング設定には表示されませんが、マージ対象となります。
ストアドプロシージャーの場合、[ストアドプロシージャーの呼び出し]コマンドで使用されているものが対象となります。
外部データベースのワークフローの履歴を保存するテーブル「{テーブル名}_FGC_WHT」はマッピング設定には表示されませんが、マージ対象となります。
外部データベースのコピーテーブルはマージ対象外です。
画面上部には、[すべての項目]と[差分項目]という2つの表示モードあり、[差分項目]の場合には変更が検出された項目のみが表示されます。なお、データ型や制約の変更の警告が存在する項目は[差分項目]には含まれません。
画面左側の[開発側データベース]には開発環境のデータベーススキーマ、画面右側の[サーバー側データベース]にはForguncy Server上の対象アプリケーションで使用しているデータベーススキーマが表示されます。
各テーブルとフィールドはツリー構造で表示され、[すべて展開]ボタンと[すべて折りたたみ]ボタンで項目の展開と折りたたみが行えます。
変更に外部データベースが含まれる場合、マッピングの設定を完了させる(背景が赤色の項目がなくなる)と画面左下の[変更のために実行されるSQL文]ボタンがクリック可能となります。ボタンをクリックすることで、変更のために外部データベースに対して実行されるSQL文を確認できます。なお、このSQL文にはデータを追加するINSERT文は含まれないことに注意してください。
同じ名前のテーブルとフィールドが自動的に対になるように表示されます。 なお、Forguncy Builderの[ナビゲーションウィンドウ]上のテーブルやビューの名前のみを変更し、実際の外部データベース上の名前とは異なる名前にしている場合、[テーブル構造のマッピング設定]ダイアログ上に表示される名前はForguncy Builder上の名前となりますが、サーバー側データベースとの比較には実際の外部データベース上名前が使用されます。また、本処理は対象データベースの種類に関わらず、常に大文字小文字を区別してその名前を比較します。そのため、大文字小文字を区別しないデータベースを使用ている場合に、その名前の大文字/小文字だけを変更してマージ処理を行うと、マージ処理に失敗することに注意してください。
対応するテーブルやフィールドがサーバー側データベースに存在しない場合、背景が赤色で表示されます。右側のドロップダウンリストからマージ方法を選択し、サーバー側データベースの構造をどのように変更するかマッピング設定を行います。
背景が赤色の項目がなくなった状態となると、[OK]ボタンがクリックできる状態となります。[OK]ボタンをクリックすると設定したマッピング情報が保存されます。
設定したマッピング情報を再編集する場合、[テーブル構造のマッピング設定]ボタンをクリックします。アプリケーション名を変更したり、[サーバー上にあるデータベースを変更する]チェックオプションのチェックを切り替えたりすると、設定したマッピング情報はリセットされます。このため、マッピング情報を設定したら、発行処理を完了させてアプリケーションとデータベースを更新してください。
テーブルが存在しない場合、ドロップダウンリストには既存のテーブル名のほかに「(新規作成)」、と「(新規作成し、データも移行)」が表示されます。この2つのどちらかを選択した場合、そのテーブルに含まれるすべてのフィールドのマージ方法が「(新規作成)」に自動的に設定されます。なお、アプリのオフライン配置ツールを使用している場合、「(新規作成し、データも移行)」の動作はサポートされないことに注意してください。
フィールドが存在しない場合、ドロップダウンリストには既存のフィールド名のほかに「(新規作成)」が表示されます。新規作成し、データも移行することはできません。これはサーバー側データベースのレコード数が開発側データベースと一致していることを確認できないためです。
サーバー側データベースに同名のテーブルが存在している場合に、「(新規作成)」、あるいは「(新規作成し、データも移行)」を指定した場合、サーバー側データベースの同名のテーブルは削除されます。
サーバー側データベースには存在しているが、開発側データベースでは削除されてしまっているテーブル、フィールドはすべて削除されます。マッピング設定の一覧には表示されないことに注意してください。
背景が赤色の未設定の項目に変更を加えると、設定済みとみなされ背景が白色に変わります。
サーバー側データベースのマージ方法を初期状態から変更した項目は、編集済みを意味する「鉛筆マーク」のアイコンが表示されます。
「!(エクスクラメーションマーク)」のアイコンは、以下の場合に表示されます。
フィールドのデータ型が異なる場合
Forguncyのデータ型は、データベースのデータ型と以下の表のようにマッピングされます。データベースのデータ型が異なる場合、データの不整合が起こりデータが失われる可能性があります。
Forguncyのデータ型 |
データベースのデータ型 |
---|---|
テキスト |
string |
整数 |
long |
小数 |
double |
日付 |
double |
時刻 |
double |
Yes/No |
long |
ユーザーアカウント |
string |
画像 |
string |
添付ファイル |
string |
開発側のデータベースの項目に一意の制約が設定されているとき、対になるサーバー側のデータ項目が一意の制約を満たさない可能性がある場合
この場合、発行が失敗する可能性があります。
必須となる一意の制約が正しくない場合