Issue
-
Exporting a structure that contains previous versions can cause a unique constraint violation on import. The following stack trace is seen in the logs:
2022-12-19 21:24:49.032 ERROR [liferay/background_task-3][BatchingBatch:134] HHH000315: Exception executing batch [java.sql.BatchUpdateException: Duplicate entry '41614-44192-44190-Text37517990-0' for key 'dedatadefinitionfieldlink.IX_998C30ED'], SQL: insert into DEDataDefinitionFieldLink (mvccVersion, ctCollectionId, uuid_, groupId, companyId, createDate, modifiedDate, classNameId, classPK, ddmStructureId, fieldName, lastPublishDate, deDataDefinitionFieldLinkId) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2022-12-19 21:24:49.032 ERROR [liferay/background_task-3][SqlExceptionHelper:142] Duplicate entry '41614-44192-44190-Text37517990-0' for key 'dedatadefinitionfieldlink.IX_998C30ED'
2022-12-19 21:24:49.047 ERROR [liferay/background_task-3][LoggerExportImportLifecycleListener:399] Staged model {class: com.liferay.data.engine.model.DEDataDefinitionFieldLink, uuid: be48ce84-a3fd-0e6f-51bf-23097effa163} import failed
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute batch
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154) ~[hibernate-core.jar:5.6.7.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core.jar:5.6.7.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core.jar:5.6.7.Final]
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1411) ~[hibernate-core.jar:5.6.7.Final]
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1394) ~[hibernate-core.jar:5.6.7.Final]
at com.liferay.portal.spring.hibernate.PortletTransactionManager$TransactionStatusWrapper.reset(PortletTransactionManager.java:283) ~[portal-impl.jar:?]
at com.liferay.portal.spring.hibernate.PortletTransactionManager.commit(PortletTransactionManager.java:68) ~[portal-impl.jar:?]
at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.commit(DefaultTransactionExecutor.java:41) ~[portal-impl.jar:?]
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:77) ~[portal-impl.jar:?]
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57) ~[portal-impl.jar:?]
at com.liferay.portal.service.ServiceContextAdvice.invoke(ServiceContextAdvice.java:60) ~[portal-impl.jar:?]
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57) ~[portal-impl.jar:?]
at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49) ~[portal-impl.jar:?]
at com.sun.proxy.$Proxy959.addDEDataDefinitionFieldLink(Unknown Source) ~[?:?]
at com.liferay.data.engine.internal.exportimport.staged.model.repository.DEDataDefinitionFieldLinkStagedModelRepository.addStagedModel(DEDataDefinitionFieldLinkStagedModelRepository.java:57) ~[?:?]
at com.liferay.data.engine.internal.exportimport.staged.model.repository.DEDataDefinitionFieldLinkStagedModelRepository.addStagedModel(DEDataDefinitionFieldLinkStagedModelRepository.java:36) ~[?:?]
at com.liferay.data.engine.internal.exportimport.data.handler.DEDataDefinitionFieldLinkStagedModelDataHandler.doImportStagedModel(DEDataDefinitionFieldLinkStagedModelDataHandler.java:208) ~[?:?]
at com.liferay.data.engine.internal.exportimport.data.handler.DEDataDefinitionFieldLinkStagedModelDataHandler.doImportStagedModel(DEDataDefinitionFieldLinkStagedModelDataHandler.java:43) ~[?:?]
(...)
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute batch
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:109) ~[hibernate-core.jar:5.6.7.Final]
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37) ~[hibernate-core.jar:5.6.7.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) ~[hibernate-core.jar:5.6.7.Final]
(...)
Caused by: java.sql.BatchUpdateException: Duplicate entry '41614-44192-44190-Text37517990-0' for key 'dedatadefinitionfieldlink.IX_998C30ED'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_341]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_341]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_341]
(...)
Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '41614-44192-44190-Text37517990-0' for key 'dedatadefinitionfieldlink.IX_998C30ED'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117) ~[mysql.jar:8.0.29]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql.jar:8.0.29]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql.jar:8.0.29]
(...)
Environment
- Liferay DXP 7.4
Resolution
- Please upgrade to Quarterly Releases.
- If you cannot upgrade to Quarterly Releases, you will need to request a support exception asking for a hotfix including LPS-171439 and LPS-184158.
- The LAR file will need to be re-exported after the fix is applied.
Additional Information
- LPS-171439 - Export/import process fails if there are data links associated with earlier versions of the structure
- LPS-184158 - ERROR: duplicate key value violates unique constraint "ix_998c30ed" when publishing a Webcontent structure in Remote Staging after upgrading from 7.2 to 7.4
- Liferay DXP Quarterly Release Process