在symfony2中为Doctrine DBAL配置设置driverOptions的正确方法

时间:2012-11-08 22:15:23

标签: php symfony doctrine-orm symfony-2.1

我在配置文件中设置了 driverOptions ,如教条DBAL文档中所述。

但这会产生错误

1/1 InvalidConfigurationException:“doctrine.dbal.connections.pdoDevCon”下无法识别的选项“driverOptions”

我的配置文件是

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: ~ 

我使用 PDO :: ATTR_ERRMODE作为3 PDO :: ERRMODE_EXCEPTION为2 ,即使我使用字符串它也不起作用。

3 个答案:

答案 0 :(得分:7)

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

  

DoctrineBundle支持默认Doctrine驱动程序的所有参数   接受,转换为Symfony的XML或YAML命名标准   强制实施即可。有关更多信息,请参阅Doctrine DBAL文档。

symfony yml配置文件中没有driverOptions,只有options

答案 1 :(得分:3)

我没有使用Symfony,但我使用的是Doctrine\DBAL\DriverManager::getConnection()

我不得不支持DriverManager并跳这首歌并跳舞以指定连接超时(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);
}

我总是需要一个pdo_mysql驱动程序,这可以配置。

答案 2 :(得分:0)

您可以从yml设置此选项。 事实是您需要使用const值:

选项参数将被复制为驱动程序选项,不用担心

整数是2

选项 2:10

为我工作i。 Symfony 3.4和4.2