【问题标题】:Correct way to set the driverOptions for Doctrine DBAL configuration in symfony2在 symfony2 中为 Doctrine DBAL 配置设置 driverOptions 的正确方法
【发布时间】:2012-11-08 22:15:22
【问题描述】:

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

【问题讨论】:

    标签: php symfony doctrine-orm symfony-2.1


    【解决方案1】:

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

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

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

    【讨论】:

    • 这个可以更新,因为 symfony 3.2 你可以在 yml 文件中使用 PHP 常量。所以现在配置可以是:```连接:默认:选项:!php/const:PDO::ATTR_TIMEOUT:1000000000```
    • 自 Symfony 3.4 以来,PHP 常量的使用方式发生了微小的变化,symfony.com/blog/new-in-symfony-3-2-php-constants-in-yaml-files
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      选项参数将被复制为驱动选项别担心

      int 是 2

      选项 2:10

      为我工作。 Symfony 3.4 和 4.2

      【讨论】:

        猜你喜欢
        • 2011-09-26
        • 2015-07-06
        • 2011-06-09
        • 2012-03-17
        • 2013-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多