Violation of UNIQUE KEY Constraint when Upgrading JIRA

Still need help?

The Atlassian Community is here for you.

Ask the community

Symptoms

Upgrading JIRA fails with this error:

2015-04-03 19:14:17,007 localhost-startStop-1 ERROR      [atlassian.jira.upgrade.UpgradeManagerImpl] Exception thrown during upgrade: Violation of UNIQUE KEY constraint 'pkey_unique'. Cannot insert duplicate key in object 'dbo.jiraissue'. The duplicate key value is (<NULL>).
java.sql.SQLException: Violation of UNIQUE KEY constraint 'pkey_unique'. Cannot insert duplicate key in object 'dbo.jiraissue'. The duplicate key value is (<NULL>).
	at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
	at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988)
	at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421)
	at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:671)
	at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:613)
	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:572)
	at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeUpdate(JtdsPreparedStatement.java:727)
	...

Diagnosis

JIRA is being upgraded from a version older than 6.1 to one newer than (or equal to) 6.1, using the Installer.

According to the stacktrace, table jiraissue has a Unique Key constraint which prevents NULL values from being inserted into a column multiple times. This constraint can be viewed from the table structure:

CONSTRAINT [pkey_unique] UNIQUE NONCLUSTERED 
(
	[pkey] ASC
)

Cause

  • In JIRA 6.0.x and below, table jiraissue contains pkey column which consists of Unique issue keys
  • In JIRA 6.1.x and above, this column is not used any more: project key is removed while issue number is extracted and stored into issuenum column

 pkey column still exists but holds a NULL value for every issue

Because of this, the error is thrown and the upgrade task fails. JIRA can't insert a duplicate NULL value into this column.

Resolution

  •  Since this is an in-place upgrade using the Installer, data must have been backed up
  • Run this SQL query against the JIRA database to drop the constraint:

(info) By default, this constraint doesn't exist (the constraint name can be found from the stacktrace above)

alter table jiraissue drop constraint pkey_unique;
  • Run the Installer to upgrade JIRA again

Last modified on Nov 5, 2018

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.