[英]Correct way to set the driverOptions for Doctrine DBAL configuration in symfony2
我已经在配置文件中设置了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 ,即使我使用字符串它也不起作用。
来自http://symfony.com/doc/master/reference/configuration/doctrine.html#doctrine-dbal-configuration
DoctrineBundle 支持默认 Doctrine 驱动程序接受的所有参数,转换为 Symfony 强制执行的 XML 或 YAML 命名标准。 有关更多信息,请参阅 Doctrine DBAL 文档。
symfony yml 配置文件中没有driverOptions
,只有options
我没有使用 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 驱动程序,这可以配置。
您可以从 yml 设置此选项。 问题是您需要使用 const 值:
选项参数将被复制为驱动程序选项别担心
整数是 2
选项 2:10
对我有用。 Symfony 3.4 和 4.2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.