AX 2012 [Error] : Violation of PRIMARY KEY constraint 'PK_ModelElementData_ElementHandle'. Cannot insert duplicate key in object 'dbo.ModelElementData'.

Hi Developers,

Today, we will talk about below error in AX 2012 R2/R3 or D365 FO. When we upgrade or apply an hot-fix into AX environment, we might face some challenges, suppose you are installing hot-fix in your environment and face an error, open your log file and check for error in the end of the file, one is below:

AxUtil call returned errors:
Violation of PRIMARY KEY constraint 'PK_ModelElementData_ElementHandle'. Cannot insert duplicate key in object 'dbo.ModelElementData'. The duplicate key value is (822606, 1).
The statement has been terminated.
Error updating model database: Microsoft.Dynamics.Setup.AxSetupException: AxUtil call returned errors:Violation of PRIMARY KEY constraint 'PK_ModelElementData_ElementHandle'. Cannot insert duplicate key in object 'dbo.ModelElementData'. The duplicate key value is (822606, 1).
The statement has been terminated.

   at Microsoft.Dynamics.Setup.Misc.ValidateAxUtilStatus(AxUtilContext context)
   at Microsoft.Dynamics.Setup.DatabaseSqlModel.DatabaseSqlModelInstanceCommon.ImportModelFiles(IEnumerable`1 filenames, IEnumerable`1 modelsToReplace)
   at Microsoft.Dynamics.Setup.DatabaseSqlModel.DatabaseSqlModelInstanceUpdate.Execute()
An error occurred during setup of Model Database.

Solution:

In this error, we can see that there is a duplicate key associate with table ModelElementData. So we need to check and delete it according.

1) Check if there is any data available with the associate duplicate id.

[Use Your_Model_DB]
select * from ModelElementData where ElementHandle = 822606;

2) And, if you find any data is available in this table associate with duplicate key, delete it.

[Use Your_Model_DB]
delete from ModelElementData where ElementHandle = 822606;

3) Now, re-run your hot-fix. It should be successful this time.

Author:
Chirag Gupta
Microsoft Dynamics 365 AX Technical Consultant at IBM Bangalore

Date:
5-Sep-2019

Happy Learning !!

Comments

Popular posts from this blog

[Solved] : Error: String or binary data would be truncated. Cannot execute a data definition language command on Vendor (VendLedgerReconciliationTmp)

AX 2012 - Command prompt compilation / AxBuild.exe for Parallel Compile on AOS of X++ to P-code / Parallel Compilation

AX 2012 - How to send SSRS report in email as an attachment using X++

AX 2012 - How to stop AOS when services got stuck at stopping status

AX 2012 - How to make a form field mandatory

Error: There was no endpoint listening at net.tcp://your_server_name:8201/Dynamics AX/Services…

Fetch vendor address using X++ in AX 2012

AX 2012 - How to print current date and time on SSRS Report

[Solved] : AX 2012 - No connection could be made because the target machine actively refused it 192.168.10.249:8201

[Error] - Error in unit of amount in currency KES. Must be rounded to 0.01 | The unit of 37.563.5343100000000000 KES being posted to account 32710001-- is outside the current penny rounding threshold | Posting has been canceled