legacy-knowledge-base
公開されました Jul. 2, 2025

Knowledge BaseプラグインでPortal 6.2からDXP 7.1へのアップグレードに失敗することがある。

投稿者

Michael Warren Young

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

  • Liferay Portal 6.2 から Liferay DXP 7.1 へのアップグレードの一環として Knowledge Base プラグインをアップグレードしようとすると、以下のようなエラーが表示される場合があります:
upgrade:execute com.liferay.knowledge.base.service 
INFO - Upgrading com.liferay.knowledge.base.internal.upgrade.v2_0_2.UpgradeKBArticle
INFO - Failed upgrade process com.liferay.knowledge.base.internal.upgrade.v2_0_2.UpgradeKBArticle in 6 ms
. . .

ERROR [main][com_liferay_portal_upgrade_impl:97] Invocation to listener threw exception
com.liferay.portal.kernel.upgrade.UpgradeException: java.sql.SQLException: ORA-01408: such column list already indexed_ [Sanitized]

環境

  • Liferay Portal 6.2 EE、Knowledge Baseプラグインを導入。
  • Liferay DXP 7.1

解決策

  • Knowledge Baseプラグインでは、 _renameConflictingKBArticleFriendlyURLs()_renameConflictingKBFolderFriendlyURLs() が、それぞれKBArticlesとKBFoldersのユニークなURLタイトル値を見つけるために、アップグレード処理によって一時インデックスを作成する。
  • その処理が終了すると、このステートメントによってインデックスが削除されます:
protected void doUpgrade() throws Exception {
runSQL(
"create index IX_TEMP on KBArticle (groupId, kbFolderId, " +
"urlTitle[$COLUMN_LENGTH:75$])");
try {
boolean changed = true;
while (changed) {
changed = _renameConflictingKBArticleFriendlyURLs();
}
changed = true;
while (changed) {
changed = _renameConflictingKBFolderFriendlyURLs();
}
}
finally {
runSQL("drop index IX_TEMP on KBArticle");
}
}
  • このインデックスはアップグレードプロセスの一部であり、Portal 6.2でもDXP 7.1でもLiferayは使用しないので、最善の方法は、このインデックスを単に削除することです。
  • 変更する前に、必ずデータベースのバックアップをとってください。
  • 次に、 KbArticle テーブルに対して、インデックス "IX_TEMP" が存在することを確認します。
  • もしそうなら、Liferayが停止し、誰もインデックスにアクセスしていないことが確認できたとき、このインデックス を落としても安全なはずです。
did-this-article-resolve-your-issue

legacy-knowledge-base