Edgewall Software

Database Backend

Trac offers an easily extensible layer for database support, see trac.db.api. The following databases have been integrated in this layer:

There is work in progress for the following databases:

Database Installation Instructions


Installed out-of-the-box, provided you have installed the PySqlite bindings.

The following parameters are supported:

  • extensions: Load the extensions, see also TracIni.
  • timeout: Set timeout to connect the database, 10.0 is used by default.
  • cursor: eager cursor pre-fetching all the rows is used by default. It can be turned off by specifying cursor= (#3446).
  • journal_mode: Set the journal mode to the database (since 1.0.5).
  • synchronous: Set the synchronous flag (since 1.0.5).

Known issues: see pysqlite-related tickets.



  • Have a working copy of Postgresql.
  • Get the proper database driver for Python, see above.
  • Create a database for your Trac environment:
    % createdb dbname
  • Run trac-admin to create a new Trac environment. When prompted for a Database connection string, use:

Notice that the port number might be different in your Postgresql installation, eg 5433. See postgresql.conf.

Alternatively on UNIX, if the database is a local one, you can use UNIX sockets instead of TCP/IP:


If you are using user Trac without a password to connect through UNIX sockets to database trac and have only one project (hence no need for different schemas), your connections string would be postgres://trac:@/trac

  • Note: '?host=…' is optional. Check your postgresql.conf' unix_socket_directory option if you have connection problems.

See #4546 for more details.

See also #2441, which discusses the process of migration from SQLite to Postgresql.

For a Postgresql recipe tested on CentOS4 (Red Hat -EL4) see PostgresqlRecipe.

Note: Since Trac 0.10 the psycopg1 Postgresql driver is no longer supported due to lack of Unicode support.

Known issues: see postgres-related tickets


MySQL is supported by Trac since 0.10, but there are some caveats, documented in more details in the MySqlDb page.

  • Run trac-admin to create a new Trac environment. When prompted for a database connection string, use:
  • or when you need more options:

The following parameters are supported since Trac 1.0:

  • compress: Enable compression (0 or 1)
  • init_command: Command to run once the connection is created
  • named_pipe: Use a named pipe to connect on Windows (0 or 1)
  • read_default_file: Read default client values from the given file (also used for SSL configuration)
  • read_default_group: Configuration group to use from the default file
  • unix_socket: Use a Unix socket at the given path to connect

Known issues: see mysql-related tickets.

Database Conversion

TracMigratePlugin allows an environment to be easily migrated between the supported database backends.

Last modified 4 months ago Last modified on May 28, 2015 11:45:11 PM