This page last changed on Jul 19, 2006 by david.soul@atlassian.com.
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:
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
- Find the following lines:
<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: </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>
Configure 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: Where Is My ConfluenceHome 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>
Restart 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.
|