Instructions on setting up a MySQL DataSource connection for Confluence Standalone or EAR/WAR.

autoReconnect=true is required

The Confluence database connection URL must have autoReconnect=true added to the end to prevent disconnection issues.

Shut down Tomcat

  • Run bin/shutdown.sh or bin/shutdown.bat to bring Tomcat down while you are making these changes

Install the Drivers

  • download the MySQL JDBC drivers from http://www.mysql.com/downloads/api-jdbc-stable.html.
  • After unpacking the file you have downloaded, you'll find a file called something like mysql-connector-java-3.0.10-stable-bin.jar.
  • Copy this file into the common/lib directory of your Tomcat installation.

Configure Tomcat

The configuration is different for Conflence 2.2 onwards due to an upgrade to Tomcat 5.5

For users of Confluence 2.2 and later

  • If you are using the Standalone distribution. edit the conf/server.xml file in your Tomcat installation. Users running their own Tomcat instance must edit the xml file where they declared the Confluence Context descriptor.
  • If editing conf/server.xml, find the following lines:
    <Context path="" docBase="../confluence" debug="0" reloadable="true">
                        <!-- Logger is deprecated in Tomcat 5.5. Logging configuration for Confluence is specified in confluence/WEB-INF/classes/log4j.properties -->
    
  • Within the Context tags, directly after the opening <Context.../> line, insert the DataSource Resource tag:
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
             username="yourusername"
             password="yourpassword"
             driverClassName="com.mysql.jdbc.Driver"
             url="jdbc:mysql://localhost:3306/confluence?autoReconnect=true"
             validationQuery="Select 1" />
    
    • Replace the username and password parameters with the correct values for your database
    • In the url parameter, replace the word 'confluence' with the name of the database your confluence data will be stored in.
    • If you plan to use non-latin characters, you will also need to add "&useUnicode=true&characterEncoding=utf8" on the end of the above URL. These options are not required for any database other than MySQL.

For users of Confluence 2.1.x and earlier

  • Edit the conf/server.xml file in your Tomcat installation
  • 以下の行を見つけます。
    <Context path="" docBase="../confluence" debug="0" reloadable="true">
           <Logger className="org.apache.catalina.logger.FileLogger" prefix="atlassian-confluence."
           suffix=".log" timestamp="true"/>
    
  • Directly after the <Logger.../> line, (before the next </Context> line), insert the following:
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/confluence">
        <parameter>
             <name>factory</name>
             <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>
        <parameter>
             <name>maxActive</name>
             <value>20</value>
        </parameter>
        <parameter>
             <name>maxIdle</name>
             <value>10</value>
        </parameter>
        <parameter>
            <name>maxWait</name>
            <value>10000</value>
        </parameter>
        <parameter>
            <name>username</name>
            <value>yourusername</value>
        </parameter>
        <parameter>
            <name>password</name>
            <value>yourpassword</value>
        </parameter>
        <parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
        </parameter>
        <parameter>
            <name>url</name>
            <value>jdbc:mysql://localhost:3306/confluence?autoReconnect=true</value>
        </parameter>
    </ResourceParams>
    
    • You may want to choose different maxActive and maxIdle values: these are how many total database connections will be allowed at one time, and how many will be kept open even when there is no database activity
    • Replace the username and password parameters with the correct values for your database
    • In the url parameter, replace the word 'confluence' with the name of the database your confluence data will be stored in.
    • If you plan to use non-latin characters, you will also need to add &useUnicode=true&characterEncoding=utf8 on the end of the above URL. These options are not required for any database other than MySQL.

Configure the Confluence web application

  • Edit confluence/WEB-INF/web.xml in your confluence installation
  • Go to the end of the file and just before </web-app>, insert the following:
    <resource-ref>
            <description>Connection Pool</description>
            <res-ref-name>jdbc/confluence</res-ref-name>
            <res-type>javax.sql.Datasource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
    

Confluence を設定する

  • If you have not yet set up Confluence
    • Follow the steps in the Confluence Setup Guide
    • In the Database Setup section, choose the "Datasource Connection" option.
    • Set the JNDI name to java:comp/env/jdbc/confluence
    • Set the Database dialect to MySQL.
  • If you are changing an existing Confluence installation over to using a Tomcat datasource
    • Find your ConfluenceHome directory (see: Confluence Home Directory if you don't know where it is).
    • Edit the confluence.cfg.xml file
    • Delete any line that contains a property that begins with hibernate.
    • Insert the following at the start of the <properties> section.
      <property name="hibernate.setup"><![CDATA[true]]></property>
          <property name="hibernate.dialect"><![CDATA[net.sf.hibernate.dialect.MySQLDialect]]></property>
          <property name="hibernate.connection.datasource"><![CDATA[java:comp/env/jdbc/confluence]]></property>
      

Confluence を再起動します。

  • Run bin/startup.sh or bin/startup.bat to start Tomcat with the new settings.

F.A.Q.

I see "Can't call commit when autocommit=true" during an upgrade of Confluence or otherwise.

Check out http://jira.atlassian.com/browse/CONF-1710 This error can be fixed by adding:
&relaxAutoCommit=true
to the end of your JDBC url.

Example:
jdbc:mysql://localhost/confdb?autoReconnect=true&relaxAutoCommit=true

This JDBC url can be found in your confluence.cfg.xml file located in your confluence home folder.