The databases.yml Configuration File
The databases.yml
configuration allows for the configuration of the
database connection. It is used by both ORMs bundled with symfony: Propel and
Doctrine.
The main databases.yml
configuration file for a project can be found in
the config/
directory.
note
Most of the time, all applications of a project share the same
database. That's why the main database configuration file is in the
project config/
directory. You can of course override the default
configuration by defining a databases.yml
configuration file in your
application configuration directories.
As discussed in the introduction, the databases.yml
file is
environment-aware, benefits from
the configuration cascade mechanism,
and can include constants.
Each connection described in databases.yml
must include a name, a database
handler class name, and a set of parameters (param
) used to configure the
database object:
CONNECTION_NAME: class: CLASS_NAME param: { ARRAY OF PARAMETERS }
The class
name should extend the sfDatabase
base class.
If the database handler class cannot be autoloaded, a file
path can be
defined and will be automatically included before the factory is created:
CONNECTION_NAME: class: CLASS_NAME file: ABSOLUTE_PATH_TO_FILE
note
The databases.yml
configuration file is cached as a PHP file; the
process is automatically managed by the sfDatabaseConfigHandler
class.
tip
The database configuration can also be configured by using the
database:configure
task. This task updates the databases.yml
according to the arguments you pass to it.
Propel
Default Configuration:
dev: propel: param: classname: DebugPDO debug: realmemoryusage: true details: time: { enabled: true } slow: { enabled: true, threshold: 0.1 } mem: { enabled: true } mempeak: { enabled: true } memdelta: { enabled: true } test: propel: param: classname: DebugPDO all: propel: class: sfPropelDatabase param: classname: PropelPDO dsn: mysql:dbname=##PROJECT_NAME##;host=localhost username: root password: encoding: utf8 persistent: true pooling: true
The following parameters can be customized under the param
section:
Key | Description | Default Value |
---|---|---|
classname |
The Propel adapter class | PropelPDO |
dsn |
The PDO DSN (required) | - |
username |
The database username | - |
password |
The database password | - |
pooling |
Whether to enable pooling | true |
encoding |
The default charset | UTF8 |
persistent |
Whether to create persistent connections | false |
options |
A set of Propel options | - |
debug |
Options for the DebugPDO class |
n/a |
The debug
entry defines all the options described in the Propel
documentation.
The following YAML shows all the available options:
debug: realmemoryusage: true details: time: enabled: true slow: enabled: true threshold: 0.001 memdelta: enabled: true mempeak: enabled: true method: enabled: true mem: enabled: true querycount: enabled: true
Doctrine
Default Configuration:
all: doctrine: class: sfDoctrineDatabase param: dsn: mysql:dbname=##PROJECT_NAME##;host=localhost username: root password: attributes: quote_identifier: false use_native_enum: false validate: all idxname_format: %s_idx seqname_format: %s_seq tblname_format: %s
The following parameters can be customized under the param
section:
Key | Description | Default Value |
---|---|---|
dsn |
The PDO DSN (required) | - |
username |
The database username | - |
password |
The database password | - |
encoding |
The default charset | UTF8 |
attributes |
A set of Doctrine attributes | - |
The following attributes can be customized under the attributes
section:
Key | Description | Default Value |
---|---|---|
quote_identifier |
Whether to wrap identifiers with quotes | false |
use_native_enum |
Whether to use native enums | false |
validate |
Whether to enable data validation | false |
idxname_format |
Format for index names | %s_idx |
seqname_format |
Format for sequence names | %s_seq |
tblname_format |
Format for table names | %s |
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.