Jira operations may fail with an SQL exception

Still need help?

The Atlassian Community is here for you.

Ask the community


Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

When using Jira with an Oracle database with multiple schemas, some operations may persistently fail with an SQL exception.

This problem has been reported as occurring during an upgrade from Jira 7.13 to Jira 8, and has also been seen when transitioning issues in Jira 8. In this latter case, the following error is observed in the UI: org.ofbiz.core.entity.GenericTransactionException: Commit failed, rollback previously requested by nested transaction.

Environment

  • Jira 7.x
  • Jira 8.x
  • Oracle database with 12.1.0.2 or 12.2.0.1 driver


Diagnosis

This specific problem can be diagnosed by the presence of these messages in the atlassian-jira.log


java.lang.RuntimeException: Unable to enquire table names available in the system
	at com.atlassian.pocketknife.internal.querydsl.schema.DefaultSchemaProvider.tableColumnNames(DefaultSchemaProvider.java:170)
	at com.atlassian.pocketknife.internal.querydsl.util.MemoizingResettingReference.lambda$get$6(MemoizingResettingReference.java:59)
	at com.atlassian.pocketknife.internal.querydsl.util.MemoizingResettingReference$SmarterMemoizingSupplier.get(MemoizingResettingReference.java:150)
	at com.atlassian.pocketknife.internal.querydsl.util.MemoizingResettingReference.safelyGetT(MemoizingResettingReference.java:71)
	at com.atlassian.pocketknife.internal.querydsl.util.MemoizingResettingReference.get(MemoizingResettingReference.java:63)
	at com.atlassian.pocketknife.internal.querydsl.schema.DefaultSchemaProvider.prime(DefaultSchemaProvider.java:43)
	at com.atlassian.pocketknife.spi.querydsl.DefaultDialectConfiguration.getDialectConfig(DefaultDialectConfiguration.java:67)
	at com.atlassian.pocketknife.internal.querydsl.DatabaseConnectionConverterImpl.getDialectConfig(DatabaseConnectionConverterImpl.java:51)
	at com.atlassian.pocketknife.internal.querydsl.DatabaseConnectionConverterImpl.convertImpl(DatabaseConnectionConverterImpl.java:44)
	at com.atlassian.pocketknife.internal.querydsl.DatabaseConnectionConverterImpl.convertExternallyManaged(DatabaseConnectionConverterImpl.java:39)
	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$18(DatabaseAccessorImpl.java:54)
	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.executeInternal(DefaultTransactionalExecutor.java:87)
	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.lambda$execute$0(DefaultTransactionalExecutor.java:43)
	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.lambda$borrowConnectionAndExecute$0(JiraHostConnectionAccessor.java:95)
	at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74)
Caused by: java.sql.SQLException: ORA-01427: single-row subquery returns more than one row


Cause

The same Oracle object type name is in use in multiple schemas. The Oracle driver performs a global search of type names. If duplicate type names are returned the driver throws an SQL exception. See this Oracle support document for more information.

Solution

The problem can be resolved by renaming or removing duplicate object type names. Please contact Oracle to identify other resolutions.


Last modified on Aug 21, 2020

Was this helpful?

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