6

我已经在配置文件中设置了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,即使我使用字符串也不起作用。

4

3 回答 3

8

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

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

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

于 2012-11-08T22:57:58.983 回答
4

我没有使用 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 驱动程序,这可以配置。

于 2015-05-19T15:54:02.440 回答
0

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

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

整数是 2

选项 2:10

我为我工作。Symfony 3.4 和 4.2

于 2020-02-13T15:05:24.280 回答