legacy-knowledge-base
公開されました Jun. 30, 2025

アップグレードエラー:com.liferay.document.library.serviceがアップグレードされていないため、データベースインデックスの更新をスキップしました。

written-by

Daniel Martinez Cisneros

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

四半期ごとのリリースに更新する際に、ログにエラーが表示され、いくつかのモジュールが正しく起動しません。

IndexUpdaterUtil-BundleTrackerOpener][IndexUpdaterUtil] com.liferay.document.library.serviceのデータベースインデックスの更新をスキップした。

データベース上でこのクエリを実行すると、state_列に'2'が返されます。これは、コンポーネントの更新中に問題が発生したことを意味します:ReleaseConstants.STATE_VERIFY_FAILURE。

select * from Release_ where servletContextName like('com.liferay.document.library.service')

環境

  • 四半期ごとのリリース

解像度

更新中にこの値が表示される原因としては、DLFileにリンクされているDLFileVersionが見つからないことが考えられます。

2024-06-05 09:16:19.658 ERROR [main][VerifyProcessTrackerOSGiCommands:323] com.liferay.document.library.kernel.exception.NoSuchFileVersionException: No DLFileVersion exists with the key {fileEntryId=409124855, version=1.0}
com.liferay.portal.verify.VerifyException: com.liferay.document.library.kernel.exception.NoSuchFileVersionException: No DLFileVersion exists with the key {fileEntryId=409124855, version=1.0}

データベース上でこのクエリを実行すると、DLFileVersionが欠落しているものすべてが返される:

SELECT fileEntryId
FROM dlfileentry where fileEntryId not in (select fileEntryId from dlfileversion);

このモジュールを再び動作させるための回避策は、このGroovyスクリプトですべての不整合データを削除することである:

package com.liferay.support;


import com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil;

import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;

public class CheckDLFileEntryVersions {
boolean _fix = false;
Log _log = LogFactoryUtil.getLog("LIFERAY_SUPPORT");
public CheckDLFileEntryVersions(boolean doUpdate) {
this._fix= doUpdate;
}

public void deleteDLFileEntries () {
List<Long> deleteFileEntryIds = new ArrayList<Long>();

deleteFileEntryIds.add(32879L); ///INCLUDE ALL fileEntryId returned by the previous query
long retValue = 0;
if (_fix) {
for (long fileEntryId : deleteFileEntryIds) {
try {
DLFileEntryLocalServiceUtil.deleteFileEntry(DLFileEntryLocalServiceUtil.getFileEntry(fileEntryId));
_log.error("DELETED fileEntry with fileEntryId " + fileEntryId);
retValue++;
} catch (Exception e) {
_log.error("!!!! ERROR", e)
}
}
}
_log.error("#### Deleted"+retValue);
}
}
// set to true for fixing errors
boolean FIX_ERRORS = true;

Thread.start({
(new CheckDLFileEntryVersions(FIX_ERRORS)).deleteDLFileEntries();
})

元のデータベースでこれらのタスクを実行すると、問題は解決する。 実行されるステップの例を以下に説明する:

  1. Liferay 7.4.13-u60から2024.q1.11へのアップグレードを計画しています。
  2. 矛盾した DLFileVersion エントリを取得するクエリを実行します。
  3. u60でGroovyスクリプトを実行し、不整合を一掃する。
  4. サニタイズされたデータベースをコピーする。
  5. 2024.q1.11へのアップグレードを実行する。
  6. 前述のようなエラーは表示されず、モジュールは正しく起動し、release_ tableのstate_カラムは "0"-ReleaseConstants.STATE_GOODとなります。
did-this-article-resolve-your-issue

legacy-knowledge-base