データスキーマのアップグレード
Liferay をアップグレードすると、カスタム モジュールのデータ スキーマとの非互換性の問題が発生する可能性があります。 これらの問題を解決するには、次の 3 つの方法があります。
-
アップグレード プロセス は、 データベース アップグレード ツールを使用して実行できます。 アップグレード プロセスでは、モジュールに変更を加えて、Liferay インストールの現在のデータ スキーマとの互換性を確保します。 これらは、紛失や破損のリスクがないデータが既に保存されている実稼働環境で役立ちます。
-
ポータルの起動時やモジュールの展開時にアップグレード プロセスが自動的に実行されるように設定することもできます。 これは、開発時にすべてのモジュールが最新であることを確認する必要があるときに役立ちます。
-
ビルド自動アップグレード ツールを使用して、スキーマの変更を迅速にテストできます。 ビルド自動アップグレード ツールは、実際にはデータ スキーマのアップグレードを実行しません。 テーブルが削除されて再作成されるため、実稼働環境で使用するとデータが失われる可能性があります。
Liferay は、 upgrade.database.auto.run および schema.module.build.auto.upgrade を本番環境でサポートしていません。これらのプロパティを有効にすると、データが失われたり、データが適切にアップグレードされなかったりする可能性があるためです。 運用環境では、 portal-developer.properties のプロパティをfalseに設定したままにします。 データ スキーマを適切に更新するには、 アップグレード プロセスを使用します。
アップグレードのプロセス
カスタムアプリケーションを本番環境にリリースした後、Liferay はデータスキーマを変更するアップデートをリリースする場合があります。 適切に対処しないと、互換性の問題が発生する可能性があります。 モジュールで使用されるデータ構造を変更して、アップグレードされた新しいデータベースに適合させることができます。 アップグレード プロセスを作成する手順については、「 アップグレード プロセスの使用」を参照してください。
Liferay DXP 7.4 U9/Portal 7.4 GA13 以下でアップグレードプロセスを作成する手順については、 以前のバージョンでのアップグレードプロセスの使用を参照してください。
アップグレードプロセスを自動的に実行する
-
アプリケーションサーバーの
[Liferay_Home]/フォルダにportal-ext.propertiesファイルが存在しない場合は作成します。 -
プロパティ ファイルで
upgrade.database.auto.runをtrueに設定して、自動アップグレード プロセスを有効にします ( 開発者モードを使用している場合は、この手順を省略できます)。upgrade.database.auto.run=true;
グローバル プロパティ upgrade.database.auto.run を true に設定すると、モジュールのアクティブ化時にすべてのアップグレード プロセスが実行されます。 これは、スキーマに変更を加える可能性のある他の開発者と協力する場合に便利です。
デフォルトでは、 upgrade.database.auto.run は falseに設定されています。 通常、アップグレード プロセスは、データベース アップグレード ツールを使用して実行されます。
テストスキーマの変更
-
アプリケーションサーバーの
[Liferay_Home]フォルダにportal-ext.propertiesファイルが存在しない場合は作成します。 -
プロパティ ファイルで
upgrade.database.auto.runをtrueに設定して、自動アップグレード プロセスを有効にします ( 開発者モードを使用している場合は、この手順を省略できます)。schema.module.build.auto.upgrade = true;
グローバル プロパティ schema.module.build.auto.upgrade を true に設定すると、サービス ビルド番号が増加した再デプロイされたモジュールに対してモジュール スキーマの変更が適用されます。 モジュールの service.properties ファイル内の build.number プロパティは、サービスのビルド番号を示します。 ビルドの自動アップグレードでは、既存のデータを変更せずにスキーマの変更を実行します。 作成された列のデータは空のままにされ、削除された列や名前が変更された列のデータは削除され、削除されたテーブルや名前が変更されたテーブルのデータは孤立します。 データベースを迅速かつ自動的に更新しますが、これは開発目的のみです。
デフォルトでは、 schema.module.build.auto.upgrade は falseに設定されています。 モジュールの最初のデプロイメントでは、 schema.module.build.auto.upgrade の値に関係なく、モジュールのテーブルが生成されます。
以下の表は、ビルドの自動アップグレードによるスキーマ変更の処理をまとめたものです。
| スキーマの変更 | 結果 |
|---|---|
| 列を追加 | 新しい空の列を作成します。 |
| 列の名前を変更する | 既存の列を削除し、そのデータをすべて削除します。 新しい空の列を作成します。 |
| 列を削除 | 既存の列を削除し、そのデータをすべて削除します。 |
| Liferay の組み込みデータ ソースでテーブルを作成または名前を変更します。 | 既存のテーブルとそのすべてのデータを孤立させます。 新しいテーブルを作成します。 |