yesIcan
yesIcan

Reputation: 317

Correct way to set the driverOptions for Doctrine DBAL configuration in symfony2

I have set driverOptions in the config file as mentioned in the doctrine DBAL documentation.

But this gives an error

1/1 InvalidConfigurationException: Unrecognized options "driverOptions" under "doctrine.dbal.connections.pdoDevCon"

My config file is

dbal:
  default_connection: pdoDevCon
  connections:
    pdoDevCon:
      driver:   %dev_database_driver%    # <
      host:     %dev_database_host%      # |
      port:     %dev_database_port%      # | Defined in
      user:     %dev_database_user%      # |
      password: %dev_database_password%  # <   
      charset:  UTF8
      driverOptions: {3: 2}
      mapping_types:
        enum: string
        set: string

orm:
    auto_generate_proxy_classes: %kernel.debug%
     pdoDevCon:
        connection: pdoDevCon
        mappings:
          AcmeDemoBundle: ~
          AcmeHelloBundle: ~ 

I am using PDO::ATTR_ERRMODE as 3 PDO::ERRMODE_EXCEPTION as 2, it does not work even if i use the strings.

Upvotes: 7

Views: 10653

Answers (3)

RR404
RR404

Reputation: 686

You can set this option from the yml. The thing is that you nezd to use the const value:

The option param will be copied as driver option dont worry

The int is 2

options 2: 10

works for me i. Symfony 3.4 and 4.2

Upvotes: 0

Greg K
Greg K

Reputation: 11120

I'm not using Symfony but I was using Doctrine\DBAL\DriverManager::getConnection().

I had to side step the DriverManager and do this song and dance to specify a connection timeout (ATTR_TIMEOUT):

function buildDbConn($config, $timeout) {
    $params = $config->toArray();
    $params['driverOptions'] = [
        PDO::ATTR_TIMEOUT => intval($timeout),
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ];
    $driver = new Doctrine\DBAL\Driver\PDOMySql\Driver;
    return new Doctrine\DBAL\Connection($params, $driver);
}

I always need a pdo_mysql driver, this could be configurable.

Upvotes: 4

dev-null-dweller
dev-null-dweller

Reputation: 29462

From http://symfony.com/doc/master/reference/configuration/doctrine.html#doctrine-dbal-configuration

DoctrineBundle supports all parameters that default Doctrine drivers accept, converted to the XML or YAML naming standards that Symfony enforces. See the Doctrine DBAL documentation for more information.

There is no driverOptions in symfony yml configuration file, just options

Upvotes: 9

Related Questions