duplicate key value violates unique constraint system$filedocument_pkey

3
We had a strange error when working with filedocuments so this post is to may help somebody else encountering the same problem. We have a Mutatie object that is connected with a one on one reference with an object that inherits from filedocument. This problems occurs when a mutatie object already had a reference with some filedocument but I wanted it to replace that one with a new one. In the old days this would not be a problem. Just create the object set the reference with mutatie and commit. In Mx7 it will generate the error duplicate key value violates unique constraint "system$filedocument_pkey" (see stacktrace below). To solve this issue you have to first clear the reference in the mutatie object before setting that reference in the new filedocument. In my opinion this is a bug. It is a one on one reference so the system should in my opinion just replace the reference in the mutatie object and not generate this error. Or are there arguments that is a feature / modeler error? Hope this will help somebody else running into this problem. Regards, Ronald [EDIT] 15-1-2019 It seems there are multiple problems with pkey errors. Another problem to look for is asynchronous calls. The result after a asynchronous call is that you will receive pkey errors on all kind of objects (we had the logs crawling with them). So when you have these in the logs you have to think what is done BEFORE the pkey errors where logged. Because the fault is not in the microflows from your stacktrace but in the asynchronous action that is called before these errors happen. Pity you can not search for asynchronous calls from within the modeler. Try to change your asynchronous calls back to synchronous calls to solve the issue. com.mendix.core.CoreException: com.mendix.modules.microflowengine.MicroflowException: Failed to commit at MutatiesKoppeling.UploadenBrief_Mutatie (Commit : 'Commit 'Mutatie' ') Advanced stacktrace: at com.mendix.basis.component.InternalCoreBase.execute(InternalCoreBase.java:389) Caused by: com.mendix.modules.microflowengine.MicroflowException: Failed to commit at MutatiesKoppeling.UploadenBrief_Mutatie (Commit : 'Commit 'Mutatie' ') Advanced stacktrace: at com.mendix.modules.microflowengine.MicroflowUtil.processException(MicroflowUtil.java:146) Caused by: com.mendix.core.CoreRuntimeException: Failed to commit at com.mendix.basis.component.CommitHandler.commit(CommitHandler.scala:155) Caused by: com.mendix.core.CoreRuntimeException: com.mendix.core.CoreRuntimeException: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.systemwideinterfaces.connectionbus.data.UniqueConstraintViolationRuntimeException: Duplicate column value violates its unique constraint: ERROR: duplicate key value violates unique constraint "system$filedocument_pkey" Detail: Key (id)=(43347146415916325) already exists. (SQL State: 23505, Error Code: 0) at com.mendix.basis.actionmanagement.ActionManagerBase.executeInTransactionSync(ActionManagerBase.java:125) Caused by: com.mendix.core.CoreRuntimeException: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.systemwideinterfaces.connectionbus.data.UniqueConstraintViolationRuntimeException: Duplicate column value violates its unique constraint: ERROR: duplicate key value violates unique constraint "system$filedocument_pkey" Detail: Key (id)=(43347146415916325) already exists. (SQL State: 23505, Error Code: 0) at com.mendix.basis.actionmanagement.ActionManagerBase.executeSync(ActionManagerBase.java:159) Caused by: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.systemwideinterfaces.connectionbus.data.UniqueConstraintViolationRuntimeException: Duplicate column value violates its unique constraint: ERROR: duplicate key value violates unique constraint "system$filedocument_pkey" Detail: Key (id)=(43347146415916325) already exists. (SQL State: 23505, Error Code: 0) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:36) Caused by: com.mendix.systemwideinterfaces.connectionbus.data.UniqueConstraintViolationRuntimeException: Duplicate column value violates its unique constraint: ERROR: duplicate key value violates unique constraint "system$filedocument_pkey" Detail: Key (id)=(43347146415916325) already exists. (SQL State: 23505, Error Code: 0) at com.mendix.basis.action.user.CommitAction$$anonfun$commitPersistableObjects$4.applyOrElse(CommitAction.scala:97) at com.mendix.basis.action.user.CommitAction$$anonfun$commitPersistableObjects$4.applyOrElse(CommitAction.scala:95) at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:34) at scala.util.Failure.recoverWith(Try.scala:232) at com.mendix.basis.action.user.CommitAction.commitPersistableObjects(CommitAction.scala:95) at com.mendix.basis.action.user.CommitAction.executeAction(CommitAction.scala:59) at com.mendix.basis.action.user.CommitAction.executeAction(CommitAction.scala:29) at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:46) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:79) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:57) at com.mendix.core.actionmanagement.CoreAction.call(CoreAction.java:55) at com.mendix.basis.actionmanagement.ActionManagerBase$1.execute(ActionManagerBase.java:150) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32) at com.mendix.basis.actionmanagement.ActionManagerBase.executeSync(ActionManagerBase.java:155) at com.mendix.basis.actionmanagement.ActionManagerBase.executeInTransactionSync(ActionManagerBase.java:118) at com.mendix.basis.component.CommitHandler.$anonfun$storeObjectsAndAutoCommittedObjects$1(CommitHandler.scala:169) at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233) at scala.collection.immutable.List.foreach(List.scala:388) at scala.collection.TraversableLike.map(TraversableLike.scala:233) at scala.collection.TraversableLike.map$(TraversableLike.scala:226) at scala.collection.immutable.List.map(List.scala:294) at com.mendix.basis.component.CommitHandler.storeObjectsAndAutoCommittedObjects(CommitHandler.scala:167) at com.mendix.basis.component.CommitHandler.commit(CommitHandler.scala:127) at com.mendix.basis.component.CommitHandler.commit$(CommitHandler.scala:109) at com.mendix.basis.component.InternalCore.commit(InternalCore.scala:7) at com.mendix.basis.component.CommitHandler.commitWithEvents(CommitHandler.scala:68) at com.mendix.basis.component.CommitHandler.commit(CommitHandler.scala:48) at com.mendix.basis.component.CommitHandler.commit$(CommitHandler.scala:47) at com.mendix.basis.component.InternalCore.commit(InternalCore.scala:7) at com.mendix.basis.component.CommitHandler.commit(CommitHandler.scala:24) at com.mendix.basis.component.CommitHandler.commit$(CommitHandler.scala:24) at com.mendix.basis.component.InternalCore.commit(InternalCore.scala:7) at com.mendix.modules.microflowengine.actions.mxobject.CommitAction.execute(CommitAction.scala:32) at com.mendix.modules.microflowengine.actions.mxobject.CommitAction.execute(CommitAction.scala:16) at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.execute(MicroflowObject.java:47) at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAfterBreakingIfNecessary(MicroflowImpl.java:201) at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAction(MicroflowImpl.java:157) at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:46) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:79) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:57) at com.mendix.core.actionmanagement.CoreAction.call(CoreAction.java:55) at com.mendix.basis.actionmanagement.ActionManagerBase$1.execute(ActionManagerBase.java:150) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32) at com.mendix.basis.actionmanagement.ActionManagerBase.executeSync(ActionManagerBase.java:155) at com.mendix.basis.component.InternalCoreBase.execute(InternalCoreBase.java:383) at com.mendix.basis.component.InternalCoreBase.execute(InternalCoreBase.java:398) at com.mendix.webui.actions.client.ExecuteMicroflowAction.runMicroflow(ExecuteMicroflowAction.scala:46) at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:32) at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:15) at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$4(RegularClientAction.scala:46) at com.mendix.webui.requesthandling.helpers.StateHandling.withState(StateHandling.scala:33) at com.mendix.webui.requesthandling.helpers.StateHandling.withState$(StateHandling.scala:22) at com.mendix.webui.actions.client.RegularClientAction.withState(RegularClientAction.scala:21) at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$3(RegularClientAction.scala:44) at scala.util.Try$.apply(Try.scala:209) at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2(RegularClientAction.scala:44) at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2$adapted(RegularClientAction.scala:42) at com.mendix.webui.requesthandling.helpers.ContextHandling.$anonfun$inContext$4(ContextHandling.scala:41) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) at com.mendix.basis.actionmanagement.IMonitoredAction$$anon$1.execute(IMonitoredAction.scala:47) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32) at com.mendix.basis.actionmanagement.IMonitoredAction.monitor(IMonitoredAction.scala:49) at com.mendix.basis.actionmanagement.IMonitoredAction.monitor$(IMonitoredAction.scala:25) at com.mendix.webui.requesthandling.helpers.ContextHandling$ClientMonitoredAction.monitor(ContextHandling.scala:49) at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:41) at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:27) at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:21) at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:24) at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:19) at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:21) at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$1(RegularClientAction.scala:42) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest(ProfileHandling.scala:14) at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest$(ProfileHandling.scala:10) at com.mendix.webui.actions.client.RegularClientAction.profileRequest(RegularClientAction.scala:21) at com.mendix.webui.actions.client.RegularClientAction.execute(RegularClientAction.scala:39) at com.mendix.webui.requesthandling.ClientRequestHandler.handleAction(ClientRequestHandler.scala:124) at com.mendix.webui.requesthandling.ClientRequestHandler.processRequest(ClientRequestHandler.scala:101) at com.mendix.externalinterface.connector.RequestHandler.doProcessRequest(RequestHandler.java:40) at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:72) at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:69) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32) at com.mendix.external.connector.MxRuntimeConnector.processRequest(MxRuntimeConnector.java:75) at com.mendix.basis.impl.MxRuntimeImpl.processRequest(MxRuntimeImpl.java:872) at com.mendix.m2ee.appcontainer.server.handler.RuntimeHandler.service(RuntimeHandler.java:42) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:867) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:502) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) at java.lang.Thread.run(Thread.java:748)  
asked
3 answers
2

I have the same issue, filed a ticket ( 78478 ) for this last Tuesday.

Our case was slightly different:
> Case object has an 1-1 association with WorkItem, the work item is like a task, each case has at least one task, showing the current "state" of the case. While committing the Case object the ConnectionBus_Update logs: EntityStorer: Incoming StoreRequest: ObjectStoreRequest type: INSERT INTO ....WorkItem
While this object already exists and the MF has not yet reached the step where the WorkItem is updated. This INSERT INTO is incorrect (not modelled) and should not occur because the object already exists, thus causing the duplicate key value unique constraint error

Edit: first noticed this error in 7.21.0 but also occurs in 7.22.1

answered
1

I've noticed a similar error in my log.  Mendix version 7.21.0

I haven't looked into it yet. But the error gets thrown when I change a DateTime attribute on an already committed  object and then commit the object again.

answered
0

Same error here with Mendix version 7.22.2.

 

answered