問題
サービス ビルダーの変更は、service.xml に列を追加または削除した後、データベースに更新を適用しません。
環境
- Quarterly Releases
解決
Liferayでは、schema.module.build.auto.upgradeプロパティがデフォルトでfalseに設定されています。このプロパティをtrueに設定しない限り、自動アップグレードは実行されず、データベースへの変更は適用されません。
Liferayのドキュメントに記載されているように、Liferay DXPは本番環境でのビルド自動アップグレードをサポートしていません。service.xmlの変更をアップグレードする手順は以下のとおりです。
- このリンクの説明に従って、アップグレード ステップを作成します。
- テーブルの変更を定義するアップグレードステップを作成した後、buildService タスクを実行し、-service および -api モジュールをデプロイします。
- デプロイしたら、Gogo Shell に移動してアップグレードを実行します。
upgrade:execute [module_name]
//Verify execution:
upgrade:list [module_name]
これらの手順を適用すると、Service Builder が更新され、列が追加または削除されます(インデックスの作成も可能です)。変更は Release_ テーブルと ServiceComponent テーブルにも反映されます。
追加情報
- https://help.liferay.com/hc/en-us/articles/360031165751-Creating-Upgrade-Processes-for-Modules
- https://help.liferay.com/hc/en-us/articles/360031165791-Upgrading-Data-Schemas-in-Development
- https://learn.liferay.com/w/dxp/installation-and-upgrades/upgrading-liferay/upgrade-stability-and-performance/upgrading-modules-using-gogo-shell
- https://learn.liferay.com/w/dxp/liferay-development/building-applications/data-frameworks/upgrade-processes/upgrading-your-database-tables