Confluence fails to start and throws 'MySQL session isolation level 'REPEATABLE-READ' is no longer supported' error

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. 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

Problem

Confluence does not start when connecting to MySQL. The following page appears:

(Auto-migrated image: description temporarily unavailable)

Cause

MySQL is running with the wrong transaction isolation level. With 3.5, Confluence enforced a global transaction isolation level of READ-COMMITTED. As of 3.5.6, this property can be set either globally or on a session level. New installations will automatically have the correct session isolation level set, but upgraded installations will need to set it manually.

Resolution

There are several options for fixing this:

  • Set the global transaction isolation level to READ-COMMITTED. You can do this by configuring your MySQL server's settings by editing MySQL's my.cnf file (often named my.ini on Windows operating systems). Locate the [mysqld] section in the file and add/modify the following parameter:

    1 2 3 4 [mysqld] ... transaction-isolation=READ-COMMITTED ...
  • (Confluence 3.5.6 onwards) Set the session isolation level in Confluence. For existing installations of Confluence, in the top level of your Confluence home directory, find the confluence.cfg.xml file and locate the <properties> section. Add the following parameter:

    1 2 3 4 5 <properties> ... <property name="hibernate.connection.isolation">2</property> ... <properties>
  • For new installations of Confluence or if the Isolation level issue comes after Upgrade , configure the JDBC string as follows to set the sessionVariable to enforce READ-COMMITTED:

    For MySQL 5.x

    1 2 3 4 ?sessionVariables=tx_isolation='READ-COMMITTED' e.g. jdbc:mysql://127.0.0.1:3306/confdb?sessionVariables=tx_isolation='READ-COMMITTED'

    For MySQL 8.x

    1 2 3 4 ?sessionVariables=transaction_isolation='READ-COMMITTED' e.g. jdbc:mysql://127.0.0.1:3306/confdb?sessionVariables=transaction_isolation='READ-COMMITTED'
Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.