You are currently reading the 1.2 documentation. Switch to 2.0 

DSN, the Data Source Name

In order to connect to a database through Doctrine, you have to create a valid DSN (Data Source Name).

Doctrine supports both PEAR DB/MDB2 like data source names as well as PDO style data source names. The following section deals with PEAR like data source names. If you need more info about the PDO-style data source names see the documentation on PDO.

The DSN consists in the following parts:

DSN part Description
phptype Database backend used in PHP (i.e. mysql , pgsql etc.)
dbsyntax Database used with regards to SQL syntax etc.
protocol Communication protocol to use ( i.e. tcp, unix etc.)
hostspec Host specification (hostname[:port])
database Database to use on the DBMS server
username User name for login
password Password for login
proto_opts Maybe used with protocol
option Additional connection options in URI query string format. Options are separated by ampersand (&). The Following table shows a non complete list of options:

List of options

Name Description
charset Some backends support setting the client charset.
new_link Some RDBMS do not create new connections when connecting to the same host multiple times. This option will attempt to force a new connection.

The DSN can either be provided as an associative array or as a string. The string format of the supplied DSN is in its fullest form:

phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value

Most variations are allowed:

phptype://username:password@protocol+hostspec:110//usr/db_file.db
phptype://username:password@hostspec/database
phptype://username:password@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype:///database
phptype:///database?option=value&anotheroption=anothervalue
phptype(dbsyntax)
phptype

The currently supported PDO database drivers are:

Driver name Supported databases
fbsql FrontBase
ibase InterBase / Firebird (requires PHP 5)
mssql Microsoft SQL Server (NOT for Sybase. Compile PHP --with-mssql)
mysql MySQL
mysqli MySQL (supports new authentication protocol) (requires PHP 5)
oci Oracle 7/8/9/10
pgsql PostgreSQL
querysim QuerySim
sqlite SQLite 2

A second DSN format supported is

phptype(syntax)://user:pass@protocol(proto_opts)/database

If your database, option values, username or password contain characters used to delineate DSN parts, you can escape them via URI hex encodings:

Character Hex Code
: %3a
/ %2f
@ %40
+ %2b
( %28
) %29
? %3f
= %3d
& %26

Please note, that some features may be not supported by all database drivers.

Examples

Example 1. Connect to database through a socket

mysql://user@unix(/path/to/socket)/pear

Example 2. Connect to database on a non standard port

pgsql://user:pass@tcp(localhost:5555)/pear

If you use, the IP address 127.0.0.1, the port parameter is ignored (default: 3306).

Example 3. Connect to SQLite on a Unix machine using options

sqlite:////full/unix/path/to/file.db?mode=0666

Example 4. Connect to SQLite on a Windows machine using options

sqlite:///c:/full/windows/path/to/file.db?mode=0666

Example 5. Connect to MySQLi using SSL

mysqli://user:pass@localhost/pear?key=client-key.pem&cert=client-cert.pem

Questions and Feedback

If you find a problem with the documentation or have a suggestion, please register and open a ticket.

If you need support or have a technical question, you can post to the user mailing-list.