ORA-00001 WARN: 一意制約

問題

  • Oracle データベースを使用して DXP 7.2 から 7.4 U53 にアップグレードすると、次の WARN メッセージが表示されました:
    ORA-00001: unique constraint (PORTALESLIFERAY1.IX_CB778855,  nos podeis decir a que se debe y si afecta al proceso de acutalización del producto.

    com.liferay.portal.kernel.log.LogSanitizerException: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (PORTALESLIFERAY1.IX_CB778855) violated_ [Sanitized]

    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494) ~[ojdbc8.jar:18.3.0.0.0]

    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446) ~[ojdbc8.jar:18.3.0.0.0]

    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1052) ~[ojdbc8.jar:18.3.0.0.0]

    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:537) ~[ojdbc8.jar:18.3.0.0.0]

    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:255) ~[ojdbc8.jar:18.3.0.0.0]

    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:610) ~[ojdbc8.jar:18.3.0.0.0]

環境

  • DXP 7.4

解像度

  • WARNレベルでは、以下の例外が表示されるが、無視して構わない:
    2023-02-09 09:46:46.396 WARN  [main][BasePortletIdUpgradeProcess:511] null
    com.liferay.portal.kernel.log.LogSanitizerException: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (PORTALESLIFERAY1.IX_CB778855) violated_ [Sanitized]
    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494) ~[ojdbc8.jar:18.3.0.0.0]
    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446) ~[ojdbc8.jar:18.3.0.0.0]

    [...]

    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171]
    at com.liferay.portal.tools.db.upgrade.client.DBUpgraderLauncher.main(DBUpgraderLauncher.java:54) [com.liferay.portal.tools.db.upgrade.client.jar:?]
    Caused by: com.liferay.portal.kernel.log.LogSanitizerException: Error : 1, Position : 0, Sql = update PortletPreferences set portletId = 'com_liferay_dynamic_data_mapping_form_web_portlet_DDMFormAdminPortlet' where portletId = 'com_liferay_polls_web_portlet_PollsPortlet', OriginalSql = update PortletPreferences set portletId = 'com_liferay_dynamic_data_mapping_form_web_portlet_DDMFormAdminPortlet' where portletId = 'com_liferay_polls_web_portlet_PollsPortlet', Error Msg = ORA-00001: unique constraint (PORTALESLIFERAY1.IX_CB778855) violated_ [Sanitized]
    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498) ~[ojdbc8.jar:18.3.0.0.0]
    ... 284 more
    同じレコードを2回挿入しようとすると警告が出ますが、無視しても問題ありません。

    2番目のレコードが挿入されるのは、DXP 7.4でPollsの機能がFomsに移行されたためで、DXP 7.4 のアップグレードでは、portletPreferences テーブルの portletId がcom_liferay_polls_web_portlet_PollsPortlet から com_liferay_dynamic_data_mapping_form_web_portlet_DDMFormAdminPortlet に変更され、更新されますが、ダッシュボードポートレット plid=0 では、重複挿入が発生します。

    詳細については、DXP 7.3からのアップグレード後にAsset Libraries throw warningsという記事で説明されており、アップグレード中にWARNが表示されないようにする回避策があります。

追加情報

起動時の LDAP インポートがオンの場合に制約 (IX_228562AD) に違反する

この記事は役に立ちましたか?
1人中1人がこの記事が役に立ったと言っています