問題
- 新しいスタイルブックを作成したり、既存のスタイルブックを編集したりすると、次のようなエラーメッセージが表示されます:
ERROR [http-nio-8080-exec-6][JDBCExceptionReporter:234] Batch entry 0 insert into StyleBookEntryVersion (mvccVersion, ctCollectionId, version, uuid_, styleBookEntryId, groupId, companyId, userId, userName, createDate, modifiedDate, defaultStyleBookEntry, frontendTokensValues, name, previewFileEntryId, styleBookEntryKey, styleBookEntryVersionId) values (0, 0, 1, 'c4f994f5-3beb-7efd-cdd1-ec0bdbb1ff9c', 102, 37347, 37307, 37354, 'Test Test', '2022-07-25 14:20:50.144+00', NULL, 'FALSE', '', 'TestNew', 0, 'testnew', 101) was aborted: ERROR: column "mvccversion" of relation "stylebookentryversion" does not exist_ Position: 36 Call getNextException to see other errors in the batch. [Sanitized]
ERROR [http-nio-8080-exec-6][JDBCExceptionReporter:234] ERROR: column "mvccversion" of relation "stylebookentryversion" does not exist_ Position: 36 [Sanitized]
ERROR [http-nio-8080-exec-6][PortletServlet:119] javax.portlet.PortletException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
javax.portlet.PortletException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
環境
- DXP 7.4アップデート4
解像度
- このエラーは LPS-127285に関連しており、根本的な原因に対する修正がリリースされ、これは LPS-154911のブランチにバックポートされました。 しかし、このバックポートは部分的なものに過ぎない。
- 別の解決策として、添付のスクリプト postgres-upgrade-sql-for-LPS-154911-dxp-4-7310.groovy を実行してインデックスを修正することができます。
スクリプトコンソールで(Groovy)スクリプトを実行する
何よりもまず、Liferayはデータベースを直接変更しないようにアドバイスしています。 しかし、どうしても必要な場合は、 サーバ管理 > スクリプトコンソールでスクリプトを実行してください。
スクリプトを実行する前に、データベースの変更に起因する潜在的な問題を最小化または防止するために、以下の規則に従ってください:
-
データベースのバックアップを作成してください。
そうすることで、万が一問題が発生した場合にバックアップを復元できるようになります。 -
テストスクリプト
-
バニラ環境。
そうすることで、スクリプト自体が基本的なテスト環境で動作することを保証し、カスタマイズ環境に起因する問題を排除します。 -
下/テスト環境。
こうすることで、スクリプトがあなたの環境のテストデータで期待通りに動作することが保証されます。 -
本番環境のコピー
- 本番用データベースのコピーを作成する
- 本番Liferayバンドルのコピーを作成する
- コピーしたデータベースに接続する
- スクリプトをテストする
-
バニラ環境。
-
本番環境のバックアップ
本番環境(Liferayバンドルとデータベース)のバックアップを作成しておくと、何か問題が発生したときに復元するのに役立ちます。 本番環境でスクリプトを実行する前に、データまたは環境をリストアするために必要な手順をあらかじめ決めておいてください。